我试图找出如何实现具有事件流的以下逻辑:
第一个事件出现在给定的时间窗口(30秒)
与第一个事件相关的第二个事件(通过某些属性)没有在给定的时间窗口中出现
生成新错误事件
目前我实现了“相反”的实现,非常简单:
stream.begin('first').where({conditions}).next('second').where({conditions}).within(Time.seconds(30))
我试图找出如何实现具有事件流的以下逻辑:
第一个事件出现在给定的时间窗口(30秒)
与第一个事件相关的第二个事件(通过某些属性)没有在给定的时间窗口中出现
生成新错误事件
目前我实现了“相反”的实现,非常简单:
stream.begin('first').where({conditions}).next('second').where({conditions}).within(Time.seconds(30))
1条答案
按热度按时间e7arh2l61#
可以使用
PatternTimeoutFunction
在时间窗口中未接收到事件时生成新事件。有关此类函数以及如何在此处使用它的详细信息:https://ci.apache.org/projects/flink/flink-docs-release-1.3/api/java/org/apache/flink/cep/patterntimeoutfunction.html.