首页 > 解决方案 > Spring Boot for Kafka - 一个应用程序中的多个 KafkaStreams 配置

问题描述

在春天的 kafka 流中,我们可以在一个应用程序中定义两种配置吗?如果我们有两个@Bean用于配置,像这样,我该如何使用secondConfig到流中?

@Configuration
@EnableKafkaStreams
public class KafkaStreamConfig {

    @Bean(name = KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME)
    public KafkaStreamsConfiguration kafkaStreamConfig() {
        var props = new HashMap<String, Object>();

        props.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka-stream");
        props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");

        ....
 
        return new KafkaStreamsConfiguration(props);
    }

    @Bean(name = "secondConfig")
    public KafkaStreamsConfiguration kafkaStreamConfig() {
        var props = new HashMap<String, Object>();

        props.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka-stream");
        props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "other-machine:9092");

        ....
 
        return new KafkaStreamsConfiguration(props);
    }


}

谢谢

标签: javaspringspring-bootapache-kafkaspring-kafka

解决方案


Spring 只会创建一个工厂 bean(来自默认配置 bean)。对于第二个,您需要定义一个StreamsBuilderFactoryBean使用它的。


推荐阅读