Spring Kafka bean return 类型

Spring Kafka bean return types

spring kafka 流支持的文档显示如下:

@Bean
public KStream<Integer, String> kStream(StreamsBuilder kStreamBuilder) {
    KStream<Integer, String> stream = kStreamBuilder.stream("streamingTopic1");
// ... stream config
    return stream;
}

但是,我可能想要一个依赖于多个流或表的拓扑。我能做吗:

@Bean
public KStream<Integer, String> kStream(StreamsBuilder kStreamBuilder) {
    KStream<Integer, String> stream1 = kStreamBuilder.stream("streamingTopic1");
    KStream<Integer, String> stream2 = kStreamBuilder.stream("streamingTopic1");
// ... stream config
    return stream;
}

换句话说,返回的 bean 是否相关,或者仅 kStreamBuilder 发生变化才重要?

视情况而定。

如果您不需要在其他地方引用 KStream,则根本不需要将其定义为 bean,您可以自动连接由工厂创建的 StreamsBuilder豆.

如果需要引用,那么每个都必须是自己的 bean。

例如,Spring Cloud Stream 构建一个部分流,然后应用程序对其进行修改。 See here.