java - 如何获取 Spring Boot 默认的 Kafka 消费者对象
问题描述
我对 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 注入到您的测试类中:
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
在您的测试中获得 a,您需要自动装配 aConsumerFactory
并调用它createConsumer()
,您将获得一个基于配置属性的新实例。
推荐阅读
- intellij-idea - 如何在 IntelliJ 中恢复类似 vim 的 Ctrl-W 行为?
- sql - SQL DB图与临时时间折扣配合客户成本
- javascript - bootstrap-timepicker :在输入字段中复制/粘贴日期值
- excel - 类模块到对象,标准模块
- python - Python:在几次连续调用后,对 InfluxDB 的查询速度变慢
- python - QNetworkAccessManager 进程以退出代码 139 结束(被信号 11 中断:SIGSEGV)
- maven - 自定义插件的源代码中是否指定了目标?
- python - 如何在同一格式规范中一个接一个地添加一个字符/字符串
- python - 多输出回归器和 sklearn 的 RFE 模块
- python - 找不到 Statsmodel.varmax 应用或附加