我们有两种类型的事件 - InventoryEvent(Order)和InventoryEvent(Cancel)。 我希望在6秒内跟踪未发生取消事件的订单事件。 这是正在使用的查询
select a as InventoryEvent from pattern ["
+ " every a=InventoryEvent(system='Order') -> "
+ "("
+ "(timer:interval("
+ intervalSecs
+ " sec) and "
+ " not InventoryEvent(system='Cancel',keyValue('MessageKey')=a.keyValue('MessageKey')))"
+ ")]
时间间隔为6秒,订单事件和取消事件由公共消息密钥(订单ID)连接
这在大多数情况下非常有效,如下所示
现在我们有一些场景,我们无法保证订单和取消事件的顺序。所以我们有一个案例
基本上是两个订单事件,然后是两个取消事件,间隔为6秒。这也有效。 现在我们将二阶事件的时间更改为4秒而不是6秒,
二阶事件不会失败。不确定我们在查询方面缺少什么。
有谁知道为什么?
答案 0 :(得分:0)
如果您无法保证订单,请使用连接或重新排序事件(有一个帮助的重新排序视图)。 第一个场景也不会与id1进行模式匹配,如果您不这么认可,请将测试用例提交给用户邮件列表。