Spring 使用应用程序启动具有不同属性配置的 Kafka 多个消费者。yml/properties

Spring Boot Kafka Multiple Consumers with different properties configuration using appication.yml/properties

我看过一些示例,其中我们有一个 java 配置 class 并且我们定义了多个 KafkaListenerContainer 并将所需的 containerType 传递给 @kafkaListener。但是我正在探索是否有任何方法可以使用 Spring 通过应用程序启动自动 Kafka 配置来实现相同的目的。yml/properties.

没有;开机只会auto-configure一套基础设施;如果你需要多个,你需要将它们定义为bean。

但是,在最近的版本中(自 2.3.4 起),您可以向工厂添加一个监听器容器定制器,这样您就可以自定义每个监听器容器,即使它们是由同一个工厂创建的;某些属性也可以在 @KafkaListener 注释本身上被覆盖。

示例:

@Component
class Customizer {

    public Customizer(ConcurrentKafkaListenerContainerFactory<?, ?> factory) {
        factory.setContainerCustomizer(container -> {
            if (container.getContainerProperties().getGroupId().equals("slowGroup")) {
                container.getContainerProperties().setIdleBetweenPolls(60_000);
            }
        });
    }

}