E Y*_*eoh 5 suppress windowed apache-kafka apache-kafka-streams
我有以下代码段可以根据事件时间每小时聚合数据
KStream<Windowed<String>, SomeUserDefinedClass> windowedResults = inputStream
.groupByKey(Grouped.with(Serdes.String(), new SomeUserDefinedSerde<>()))
.windowedBy(TimeWindows.of(Duration.ofMinutes(60)).grace(Duration.ofMinutes(15)))
.aggregate
(
// do some aggregation
)
.suppress(Suppressed.untilTimeLimit(Duration.ofMinutes(75), Suppressed.BufferConfig.unbounded()))
.toStream();
Run Code Online (Sandbox Code Playgroud)
问题是,如果我没有收到具有相同密钥且时间戳晚于时间限制 + 宽限期的数据,我将无法关闭时间窗口并发出结果。
我想知道可以使用哪些替代方法来确保窗口关闭并在给定时间过去后发出数据(无需等待同一密钥的任何新数据)。
是否有选项/功能可以使 UntilTimeLimit 参数基于实时而不是事件时间?
注意:这个问题不是关于为什么 TimeWindow 没有关闭,而是关于在没有新数据的情况下如何关闭它