我在监控车辆的动向。每当他们进入或离开geofence时,都会触发一个事件。通过Flink,我想检查一辆车是否在栅栏内至少两个小时。
下面是我使用的模式:
begin("enter").notFollowedBy("exit").within(Time.hours(2)).followedBy("final-exit")问题是:即使退出“notFollowed”为真,部分"enter“匹配仍然有效,即如果车辆在几天后返回并触发另一个退出围栏事件,则它将通过notFollowedBy规则并导致完全匹配。
有没有办法告诉Flink主动放弃部分匹配?
发布于 2020-12-18 23:19:30
从逻辑上讲,如果在两天内没有跟随"exit“,则部分"enter”匹配仍然有效,因为在这种情况下,在两个小时内没有跟随"exit“。你能描述一下在什么情况下你想让这样的部分匹配超时吗?例如,如果您希望它在8小时后超时,那么我认为可以这样描述该行为
begin("enter")
.notFollowedBy("exit").within(Time.hours(2))
.followedBy("final-exit").within(Time.hours(8))更新
如果您的目标是过滤掉车辆在2小时内进出geofence的所有情况,然后正确处理其余事件,则可以运行具有两个阶段的管道。第一个阶段可以描述为
begin("enter")
.followedBy("quick-exit").within(Time.hours(2))然后,您可以删除与此模式匹配的事件,并对超时的事件进行进一步处理。有关如何使用processTimedOutMatch捕获和发出超时部分模式的详细信息,请参阅Handling Timed Out Partial Patterns,这将是您要考虑进行进一步处理的部分模式。
https://stackoverflow.com/questions/65319426
复制相似问题