0
我正在使用CEP來檢查事件是否在指定的時間內到達(讓我們說1分鐘)。如果不是,我想發佈一個提醒。Siddhi檢查一個事件是否沒有在指定的時間窗內到達?
更具體地說,(服務器)機器生成心跳數據流並將其發送到CEP。 心跳流包含服務器ID和時間戳。如果在1分鐘內沒有心跳數據到達,應該產生警報。
是否有可能通過CEP做類似的事情?我看到有關檢測到非發生的其他問題,但我仍不確定如何處理上述情況。
我正在使用CEP來檢查事件是否在指定的時間內到達(讓我們說1分鐘)。如果不是,我想發佈一個提醒。Siddhi檢查一個事件是否沒有在指定的時間窗內到達?
更具體地說,(服務器)機器生成心跳數據流並將其發送到CEP。 心跳流包含服務器ID和時間戳。如果在1分鐘內沒有心跳數據到達,應該產生警報。
是否有可能通過CEP做類似的事情?我看到有關檢測到非發生的其他問題,但我仍不確定如何處理上述情況。
你可以試試這個:
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;
我不得不改變'[ID3不是null]''到[不是(ID3爲null)]'爲了使執行計劃工作。爲了測試它,我每15秒發送一次heartBeats。但過期的Hebebeats流仍然會在1分鐘後填充(使用記錄器打印過期事件) – zlinks