跳到主要内容
版本:4.1.1

@KafkaListener 属性修改

Doubao 中英对照 @KafkaListener Attribute Modification

从版本 2.7.2 开始,你现在可以在容器创建之前以编程方式修改注解属性。为此,向应用上下文添加一个或多个 KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer。AnnotationEnhancer 是一个 BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>,并且必须返回一个属性 map。属性值可以包含 SpEL 和/或属性占位符;enhancer 在执行任何解析之前被调用。如果存在多个 enhancer,并且它们实现了 Ordered,则将按顺序调用它们。

important

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;
};
}