Apache Flink CEP 超时模式未按时间定义 window

Apache Flink CEP Timout Pattern in not defined by time window

我正在使用 PatternTimeoutFunction 丢弃超出定义时间 window 的事件序列。

我设置水印如下

public Watermark checkAndGetNextWatermark(Event lastElement, long extractedTimestamp) {
    return new Watermark(extractedTimestamp);
}

当模式超时发生时,timeoutTimestamp应该等于第一个事件时间戳+时间值window

但是超时是在收到下一个水印后触发的。超时是在收到下一个水印后触发还是基于 timeWindow 到期?

如果您使用事件时间,则超时由水印的接收触发。因为如果您收到此时间戳的水印,您只能确定看到了特定点之前的所有元素。

这意味着超时时间戳可以大于第一个事件时间戳 + window 长度,具体取决于下一个水印的值。因此,超时时间戳实际上是您意识到您的模式超时的事件时间。