2017-02-15 10 views
0

이벤트가 지정된 시간 내에 도착했는지 확인하는 데 CEP를 사용하고 있습니다 (1 분을 말합니다). 그렇지 않은 경우 알림을 게시하려고합니다.Siddhi는 이벤트가 지정된 시간 내에 도착하지 않는지 확인합니까?

보다 구체적으로, (서버) 기계는 하트 비트 데이터 스트림 을 생성하여이를 CEP로 보냅니다. 하트 비트 스트림에는 서버 ID와 시간 소인이 들어 있습니다. 하트 비트 데이터가 1 ​​분 내에 도착하지 않으면 경고가 생성되어야합니다.

CEP로 그런 일을 할 수 있습니까? 나는이 아닌 감지와 관련하여 다른 질문을 보았지만 위에 설명 된 시나리오에 어떻게 접근해야할지 확신 할 수 없습니다.

답변

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; 
+0

나는'[하지 (ID3가 null)] '순서로 실행 계획이 작동하기에 [ID3가 null가 아닌]''으로 변경했다. 그것을 테스트하기 위해 나는 15 초마다 심장 박동을 보내고있다. 만료 된 Hearbeats 스트림은 1 분 후에 만 ​​채워집니다 (만료 된 이벤트를 인쇄하는 로거 사용) – zlinks