我有以下代码根据事件时间每小时聚合一次数据
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();
问题是,如果我没有接收到具有相同密钥的数据,并且时间戳晚于时间限制+宽限期,我将无法关闭时间窗口并发出结果。
我想知道我可以使用什么替代方法来确保窗口关闭,并且在给定的时间过后(不等待同一密钥的任何新数据)发出数据。
是否有一个选项/特性可以使untiltimelimit参数基于实时而不是事件时间?
注意:这个问题不是关于为什么不关闭时间窗口,而是在没有新数据的情况下如何关闭它
暂无答案!
目前还没有任何答案,快来回答吧!