Spring Boot Kafka使用appication.yml/properties配置具有不同属性的多个使用者

Spring Boot Kafka使用appication.yml/properties配置具有不同属性的多个使用者,spring,spring-boot,apache-kafka,spring-kafka,Spring,Spring Boot,Apache Kafka,Spring Kafka,我见过一些例子,其中我们有一个java配置类,我们定义了多个KafkaListenerContainer,并将所需的containerType传递给@kafkaListener。但我正在探索是否有任何方法可以通过application.yml/properties使用Spring Boot auto Kafka配置实现同样的效果;引导只会自动配置一套基础设施;如果需要多个,则需要将它们定义为bean 但是,对于最新版本(自2.3.4以来),您可以向工厂添加侦听器容器自定义程序,以便可以自定义每个

我见过一些例子,其中我们有一个java配置类,我们定义了多个
KafkaListenerContainer
,并将所需的
containerType
传递给
@kafkaListener
。但我正在探索是否有任何方法可以通过application.yml/properties使用Spring Boot auto Kafka配置实现同样的效果;引导只会自动配置一套基础设施;如果需要多个,则需要将它们定义为bean

但是,对于最新版本(自2.3.4以来),您可以向工厂添加侦听器容器自定义程序,以便可以自定义每个侦听器容器,即使它们是由同一工厂创建的;某些属性也可以在
@KafkaListener
注释本身上重写

例如:

@组件
类定制器{
公共定制器(ConcurrentKafkaListenerContainerFactory工厂){
factory.setContainerCustomizer(容器->{
if(container.getContainerProperties().getGroupId().equals(“slowGroup”)){
container.getContainerProperties().setIdleBeweenPolls(60_000);
}
});
}
}

我已在application.properties中定义了
spring.kafka.listener.type=batch
,并尝试将其重写为
@KafkaListener(properties=“spring.kafka.listener.type:single”
)。但这不起作用,我仍然批量获得卡夫卡唱片。我哪里出了问题@加里鲁塞尔诺;这些属性仅为卡夫卡消费者属性。不幸的是,侦听器类型(批处理与单个)不是您可以覆盖的;因为这决定了要创建的
KafkaListener
的类型;它不是侦听器或容器的属性,它定义工厂创建的完整侦听器类型。你还需要两个工厂来建造那片土地。我会看看我是否能想出一个解决办法,但现在,你需要两个工厂。