Apache flink 中的Apache Flink CEP超时模式未由时间窗口定义

Apache flink 中的Apache Flink CEP超时模式未由时间窗口定义,apache-flink,flink-cep,Apache Flink,Flink Cep,我使用PatternTimeoutFunction在事件序列超出定义的时间窗口时丢弃它 我设置水印如下 公共水印检查和GetNextWatermark(事件lastElement,长提取时间戳){ 返回新水印(提取的时间戳); } 当模式超时发生时,timeoutTimestamp应等于第一个事件时间戳+时间窗口的值 但在接收到下一个水印后会触发超时。超时是在收到下一个水印后触发的还是基于timeWindowexpiration?如果使用事件时间,则超时是通过接收水印触发的。因为只有在收到此时

我使用
PatternTimeoutFunction
在事件序列超出定义的时间窗口时丢弃它

我设置水印如下

公共水印检查和GetNextWatermark(事件lastElement,长提取时间戳){
返回新水印(提取的时间戳);
}
当模式超时发生时,
timeoutTimestamp
应等于第一个事件时间戳+时间窗口的值


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

如果使用事件时间,则超时是通过接收水印触发的。因为只有在收到此时间戳的水印时,才能确保在某一点之前看到所有元素


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

如果我将水印时间增加为新水印(extractedTimestamp+1),它是否会触发超时?这取决于
extractedTimestamp
是什么。如果
extractedTimestamp
等于
TimeStaffElement+windowLength-1
,则应该触发它。我观察到的是,只有在接收到下一个事件后才会触发超时/水印处理。我已经测试过只有一个事件,它必须在窗口长度之后超时。那么您可能没有在第一个元素之后发送水印。假设超过窗口长度的水印在第一个元素之后到达,您应该会看到模式超时。你能检查一下这个吗?