Siddhi检查事件是否未在指定的时间窗口内到达?

时间:2017-02-15 08:51:14

标签: wso2 alert complex-event-processing wso2cep siddhi

我正在使用CEP检查事件是否在指定的时间内到达(假设1分钟)。如果没有,我想发布警报。

更具体地说,(服务器)机器生成心跳数据流并将其发送到CEP。 心跳线流包含服务器ID和时间戳。如果在1分钟内没有心跳数据到达,则应生成警报。

是否可以使用CEP做类似的事情?我已经看到了关于检测非事件的其他问题,但我仍然不确定如何处理上述情况。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

define stream heartbeats (serverId string, timestamp long);

from heartbeats#window.time(1 minute) insert expired events into delayedStream;

from every e = heartbeats -> e2 = hearbeats[serverId == e.serverId]
  or expired = delayedStream[serverId == e.serverId]
within 1 minute
select e.serverId, e2.serverId as id2, expired.serverId as id3
insert into tmpStream;

// every event on tmpStream with a 'expired' match has timeout
from tmpStream[id3 is not null]
select serverId
insert into expiredHearbeats;