如何使用挂钟时间而不是卡夫卡流中的事件时间来抑制窗口?

AK4*_*647 9 apache-kafka apache-kafka-streams

要求是,如果在输入主题的 2 分钟时间窗口内未收到某个键的预期“最终”事件(从事件负载中的 EvenType 字段标识),则发送警报。我尝试使用suppress(),如下所示:

events
  .groupByKey()
  .windowedBy(TimeWindows.of(Duration.ofMinutes(2)))
  .reduce((oldValue, newValue) -> newValue, Materialized.as(....))
  .suppress(Suppressed.untilWindowClose(BufferConfig.unbounded()))
  .filter(event -> !event.getEventType().equals("FINAL") )
  .toStream()
  .foreach( /* Send that email! */)
Run Code Online (Sandbox Code Playgroud)

基于这个博客。

但是,由于抑制()基于事件时间,因此如果未收到下一个或“最终”事件,则时间不会前进,并且根本不会发送警报。当基于挂钟时间经过 2 分钟时,如何将挂钟时间与 Suppress() 一起使用来发出事件?