此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.0! |
@KafkaListener
属性修改
从版本 2.7.2 开始,您现在可以在创建容器之前以编程方式修改注释属性。
为此,请添加一个或多个KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer
添加到应用程序上下文中。AnnotationEnhancer
是一个BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>
并且必须返回 attributes 的 Map。
属性值可以包含 SPEL 和/或属性占位符;在执行任何解析之前调用增强器。
如果存在多个增强器,并且它们实现Ordered
,它们将按顺序调用。
AnnotationEnhancer 必须声明 bean 定义static 因为它们在应用程序上下文生命周期的早期就是必需的。 |
示例如下:
@Bean
public static AnnotationEnhancer groupIdEnhancer() {
return (attrs, element) -> {
attrs.put("groupId", attrs.get("id") + "." + (element instanceof Class
? ((Class<?>) element).getSimpleName()
: ((Method) element).getDeclaringClass().getSimpleName()
+ "." + ((Method) element).getName()));
return attrs;
};
}