多次调用Kafka Streams StreamBuilder.build()是否可以

Is it OK to call Kafka Streams StreamBuilder.build() multiple times

我们正在使用 micronaut/kafka-streams。使用此框架来创建流应用程序,您可以构建如下内容:

@Factory
public class FooTopologyConfig {
  @Singleton
  @Named
  public KStream<String, FooPojo> configureTopology {
    return builder.stream("foo-topic-in")
           .peek((k,v) -> System.out.println(String.format("key %s, value: %s", k,v))
           .to("foo-topic-out");
  }
}

这个:

ConfiguredStreamBuilder::build()(在 StreamsBuilder 上调用相同的内容)稍后由框架调用,returned Topology 无法通过 Micronaut 注入。

我们需要 Topology bean 来记录拓扑的描述(通过 Topology::describe)。

执行以下操作是否安全?

多次调用build()应该没有问题。这在 Streams 的内部代码和测试中很常见。

回答你的另一个问题。如果您想稍后在拓扑的那个分支上扩展,您只需要来自 builder.stream() 操作的流。