Siddhi在时限内先查询事件

时间:2018-11-16 23:55:47

标签: complex-event-processing siddhi stream-processing

我正在尝试编写Siddhi查询,以检测某个事件是否没有在限定时间内发生在另一个事件之前。在siddhi应用程序的整个生命周期中,我必须检测“ X”是否从未在“ Y”之前发生的查询是:

from stream[value == 'Y']
and not stream[value == 'X']

我认为添加时间限制会起作用:

from stream[value == 'Y']
and not stream[value == 'X'] for 5 min

但是,“ for”语句永远不会产生任何效果。无论“ X”是4分钟前还是6分钟前,仍会触发此查询。我了解通过检查在限定时间内“ Y”是否在“ X”之后可以达到类似的效果,但是出于我的目的,我需要了解另一种方法。

锡迪这可能吗?如果可以,请提供一个示例查询来实现此目的?

1 个答案:

答案 0 :(得分:0)

根据您的评论,我将在下面回答。 Siddhi中的Sequence构造将确保没有人可以在随机点进入状态流。下面以序列查询示例为例。

from every e1=InputStream[state='X'], e2=InputStream[state'Y']
select e1.state as initialState, e2.state as finalState
insert into NextStream;

因此在这里,我们将强制X跟随连续的Y。如果Y出现在X序列构造将处理它并丢弃Y之前,那么保证进入NextStream的所有内容都保证满足x-> Y状态转换。

更轻松的序列构造是pattern。放宽连续到达要求时与顺序相同。希望这会有所帮助!