如何获取 spring 启动默认 Kafka 消费者对象
How to get spring boot default Kafka consumer object
我对 Kafka 消费者的配置在 application.yaml 文件中。我知道如果我只有 1 个消费者,我不需要创建一个 consumerFactory bean,默认情况下它会被设置为 spring。
我需要测试我的消费者,所以我需要访问我的测试文件中的消费者对象,我不想再次配置它(我想使用 application.yaml 中的默认配置)文件来创建消费者对象.这怎么可能?
Spring Boot 为 Spring Kafka 提供了足够全面的自动配置:https://docs.spring.io/spring-boot/docs/2.4.3/reference/html/spring-boot-features.html#boot-features-kafka.
您可以将这组 bean 注入到您的测试中 class:
KafkaTemplate<?, ?> kafkaTemplate
ProducerListener<Object, Object> kafkaProducerListener
ConsumerFactory<?, ?> kafkaConsumerFactory
ProducerFactory<?, ?> kafkaProducerFactory
KafkaTransactionManager<?, ?> kafkaTransactionManager
KafkaJaasLoginModuleInitializer kafkaJaasInitializer
KafkaAdmin kafkaAdmin
ConcurrentKafkaListenerContainerFactoryConfigurer kafkaListenerContainerFactoryConfigurer
ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory
KafkaStreamsConfiguration defaultKafkaStreamsConfig
KafkaStreamsFactoryBeanConfigurer kafkaStreamsFactoryBeanConfigurer
因此,要在测试中获得 KafkaConsumer
,您需要自动装配 ConsumerFactory
并调用它的 createConsumer()
,您将根据配置属性获得一个新实例.
我对 Kafka 消费者的配置在 application.yaml 文件中。我知道如果我只有 1 个消费者,我不需要创建一个 consumerFactory bean,默认情况下它会被设置为 spring。 我需要测试我的消费者,所以我需要访问我的测试文件中的消费者对象,我不想再次配置它(我想使用 application.yaml 中的默认配置)文件来创建消费者对象.这怎么可能?
Spring Boot 为 Spring Kafka 提供了足够全面的自动配置:https://docs.spring.io/spring-boot/docs/2.4.3/reference/html/spring-boot-features.html#boot-features-kafka.
您可以将这组 bean 注入到您的测试中 class:
KafkaTemplate<?, ?> kafkaTemplate
ProducerListener<Object, Object> kafkaProducerListener
ConsumerFactory<?, ?> kafkaConsumerFactory
ProducerFactory<?, ?> kafkaProducerFactory
KafkaTransactionManager<?, ?> kafkaTransactionManager
KafkaJaasLoginModuleInitializer kafkaJaasInitializer
KafkaAdmin kafkaAdmin
ConcurrentKafkaListenerContainerFactoryConfigurer kafkaListenerContainerFactoryConfigurer
ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory
KafkaStreamsConfiguration defaultKafkaStreamsConfig
KafkaStreamsFactoryBeanConfigurer kafkaStreamsFactoryBeanConfigurer
因此,要在测试中获得 KafkaConsumer
,您需要自动装配 ConsumerFactory
并调用它的 createConsumer()
,您将根据配置属性获得一个新实例.