@KafkaListener 屬性修改

從 2.7.2 版本開始,您現在可以在建立容器之前以程式設計方式修改註解屬性。為此,請向應用程式上下文新增一個或多個 KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancerAnnotationEnhancer 是一個 BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>,並且必須返回一個屬性對映。屬性值可以包含 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;
    };
}
© . This site is unofficial and not affiliated with VMware.