【发布时间】:2018-03-13 15:20:34
【问题描述】:
我是一个使用 kafka 流的新手,但我注意到的是我没有预料到的行为。我开发了一个使用 6 个主题的应用程序。我的目标是按内部字段对每个主题的事件进行分组(或加入)。那工作正常。但我的问题是窗口时间,看起来每个周期的结束时间对所有聚合的影响都在那个时间。是否只有一个计时器同时用于所有聚合?我期待当流获得配置的 30 秒时退出聚合过程。我认为这是可能的,因为我已经看到了 Windowed windowedRegion 变量的数据,并且每个流的 windowedRegion.window().start() 和 windowedRegion.window().end() 值都不同。 这是我的代码:
streamsBuilder
.stream(topicList, Consumed.with(Serdes.String(), Serdes.String()))
.groupBy(new MyGroupByKeyValueMapper(), Serialized.with(Serdes.String(), Serdes.String()))
.windowedBy(SessionWindows.with(windowInactivity).until(windowDuration))
.aggregate(
new MyInitializer(),
new MyAggregator(),
new MyMerger(),
Materialized.with(new Serdes.StringSerde(), new PaymentListSerde())
)
.mapValues(
new MyMapper()
)
.toStream(new MyKeyValueMapper())
.to(consolidationTopic,Produced.with(Serdes.String(), Serdes.String()));
【问题讨论】:
标签: stream apache-kafka apache-kafka-streams