1

Ho can be replaced a Java configuration like this

@Configuration
@EnableKafka
public class KafkaConfig {

}

With a full XML configuration?

Especially how can be methods (or classes) annotated with

@KafkaListener
public void poll(String msg){}

injected into Spring Kafka context as listeners?

andPat
  • 4,153
  • 7
  • 24
  • 36

1 Answers1

3

@EnableKafka adds 2 beans to the application context:

    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        if (!registry.containsBeanDefinition(
                KafkaListenerConfigUtils.KAFKA_LISTENER_ANNOTATION_PROCESSOR_BEAN_NAME)) {

            registry.registerBeanDefinition(KafkaListenerConfigUtils.KAFKA_LISTENER_ANNOTATION_PROCESSOR_BEAN_NAME,
                    new RootBeanDefinition(KafkaListenerAnnotationBeanPostProcessor.class));
        }

        if (!registry.containsBeanDefinition(KafkaListenerConfigUtils.KAFKA_LISTENER_ENDPOINT_REGISTRY_BEAN_NAME)) {
            registry.registerBeanDefinition(KafkaListenerConfigUtils.KAFKA_LISTENER_ENDPOINT_REGISTRY_BEAN_NAME,
                    new RootBeanDefinition(KafkaListenerEndpointRegistry.class));
        }
    }

So just add those as <bean/> s with those names.

"org.springframework.kafka.config.internalKafkaListenerAnnotationProcessor"

"org.springframework.kafka.config.internalKafkaListenerEndpointRegistry"
Gary Russell
  • 166,535
  • 14
  • 146
  • 179