需要在时间窗口内丢弃重复的消息。消息不断传入。贝娄是代码的一部分。
kStream.groupByKey(Grouped.with(Serdes.String(), Serdes.String()))
.windowedBy(TimeWindows.of(Duration.ofSeconds(15)))
.reduce((k,m) -> m)
.suppress(Suppressed.untilWindowCloses(Suppressed.BufferConfig.unbounded()))
.toStream()
.foreach((k, v) -> doSomeProcess(k,v));
我在这里做错了。我没有看到对doSomeProcess方法的任何调用。消息进入。
答案 0 :(得分:1)
事实证明,此功能需要为Windows添加“宽限期”参数”来自https://cwiki.apache.org/confluence/display/KAFKA/KIP-328%3A+Ability+to+suppress+updates+for+KTables .... .windowedBy(TimeWindows.of(Duration.ofSeconds(15))。grace(Duration.ofSeconds(5))) ....
此问题已解决。