问题描述
在春季,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,"other-machine:9092");
....
return new KafkaStreamsConfiguration(props);
}
}
谢谢
解决方法
Spring只会创建一个工厂Bean(从默认配置Bean)。对于第二个,您将需要定义一个使用它的StreamsBuilderFactoryBean
。