首页 > 解决方案 > 如何获取 Spring Boot 默认的 Kafka 消费者对象

问题描述

我对 Kafka 消费者的配置位于 application.yaml 文件中。我知道如果我只有 1 个消费者,我不需要创建一个 consumerFactory bean,它会默认由 spring 设置。我需要测试我的消费者,所以我需要访问我的测试文件中的消费者对象,并且我不想再次配置它(我想使用 application.yaml 中的默认配置)文件来创建消费者对象。这怎么可能?

标签: javaspring-kafkaspring-boot-actuatorspring-boot-test

解决方案


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(),您将获得一个基于配置属性的新实例。


推荐阅读