检索 esper epl 模式中的所有事件

问题描述 投票:0回答:1

我有一个模式,我想将其应用于事件流来检测两个不按顺序发生的事件,并且它们有一个相同的属性。然而,该语句返回正常,但结果被重复并且 eventBean 仅获取最后一个事件的值。

select * from event" +
                        " match_recognize (" +
                        " partition by robotId " +
                        " measures" +
                        " A.movementTask as m1, last(B.movementTask) as m2, C.movementTask as m3" +
                        " pattern (A B+ C)" +
                        " define" +
                        " A as A.movementTask.toVertex ='D', " +
                        " B as B.movementTask.toVertex != 'D', " +
                        " C as C.movementTask.toVertex ='D' " +
                        ")"

事件:

movementTask=Task{fromVertex:'C', toVertex:'D'}
movementTask=Task{fromVertex:'A', toVertex:'B'}
movementTask=Task{fromVertex:'A', toVertex:'B'}
movementTask=Task{fromVertex:'J', toVertex:'D'}}

我得到的结果是这样的:

{m1=Task{fromVertex:'J', toVertex:'D'}, m2=Task{fromVertex:'J', toVertex:'D'}, m3=Task{fromVertex:'J', toVertex:'D'}}

这是不正确的,我应该得到:

{m1=Task{fromVertex:'C', toVertex:'D'}, m2=Task{fromVertex:'A', toVertex:'B'}, m3=Task{fromVertex:'J', toVertex:'D'}}
streaming complex-event-processing esper epl nesper
1个回答
0
投票

确保您的代码为每个不同的事件发送一个新的事件对象。代码不能使用“set”或“put”,但它必须是为每个事件重新分配的新对象。我这么说是因为事件数据似乎被混淆了,因为事件对象被代码重用了。

© www.soinside.com 2019 - 2024. All rights reserved.