1. @Target(value={TYPE,METHOD,ANNOTATION_TYPE})
    2. @Retention(value=RUNTIME)
    3. @MessageMapping
    4. @Documented
    5. @Repeatable(value=KafkaListeners.class)
    6. public @interface KafkaListener


    Annotation that marks a method to be the target of a Kafka message listener on the specified topics.

    The containerFactory() identifies the KafkaListenerContainerFactory to use to build the Kafka listener container. If not set, a default container factory is assumed to be available with a bean name of kafkaListenerContainerFactory unless an explicit default has been provided through configuration.

    Processing of @KafkaListener annotations is performed by registering a KafkaListenerAnnotationBeanPostProcessor. This can be done manually or, more conveniently, through EnableKafka annotation.

    Annotated methods are allowed to have flexible signatures similar to what MessageMapping provides, that is

    • ConsumerRecord to access to the raw Kafka message
    • Acknowledgment to manually ack
    • @Payload-annotated method arguments including the support of validation
    • @Header-annotated method arguments to extract a specific header value, defined by KafkaHeaders
    • @Headers-annotated argument that must also be assignable to Map for getting access to all headers.
    • MessageHeaders arguments for getting access to all headers.
    • MessageHeaderAccessor for convenient access to all method arguments.

    When defined at the method level, a listener container is created for each method. The MessageListener is a MessagingMessageListenerAdapter, configured with a MethodKafkaListenerEndpoint.
    When defined at the class level, a single message listener container is used to service all methods annotated with @KafkaHandler. Method signatures of such annotated methods must not cause any ambiguity such that a single method can be resolved for a particular inbound message. The MessagingMessageListenerAdapter is configured with a MultiMethodKafkaListenerEndpoint.

    Author:Gary Russell, Venil NoronhaSee Also:EnableKafka, KafkaListenerAnnotationBeanPostProcessor, KafkaListeners