【问题标题】:Is it OK to call Kafka Streams StreamBuilder.build() multiple times多次调用 Kafka Streams StreamBuilder.build() 可以吗
【发布时间】:2020-12-01 17:05:27
【问题描述】:

我们正在使用 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");
  }
}

这个:

  • 收到ConfiguredStreamBuilderStreamsBuilder 周围的非常轻的包装)
  • 构建并返回流(我们实际上并不确定返回流的重要性, 但这是一个不同的问题)。

ConfiguredStreamBuilder::build()(在 StreamsBuilder 上调用相同)稍后由框架调用,并且返回的 Topology 不可用于 Micronaut 注入。

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

执行以下操作是否安全?

  • 调用ConfiguredStreamBuilder::build(因此调用StreamsBuilder::build)并使用返回的Topology 实例来打印人类可读的描述。
  • 允许框架稍后再次调用ConfiguredStreamBuilder::build,并使用返回的拓扑的second实例来构建应用程序。

【问题讨论】:

    标签: java apache-kafka-streams micronaut-kafka


    【解决方案1】:

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

    回答您的其他问题。如果您想稍后扩展拓扑的该分支,则只需要来自 builder.stream() 操作的流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多