2017-01-11 9 views
0

の不在マッチング:statusStreamのすべてのイベント:私は、オブジェクトの状態の簡単な流れ持つイベント

define stream statusStream (id string, success bool); 

を私は5分以降(成功= false)を「失敗」しているすべてのオブジェクトを照会します(偽)イベントがない(同じid、true)5分以内。

この種のジョブで最も単純なsiddhiクエリは何ですか?

現在、私が持っている:

define stream statusStream (id string, success bool); 

from statusStream[ success == false ]#window.time(5 minutes) 
insert expired events into expiredStatusStream; 

from every status = statusStream[ success == false ] 
    -> ackStatus = statusStream[ success == true and id == status.id] 
    or expiredStatus = expiredStatusStream[ id == status.id ] 
select status.id, ackStatus.id as ackId 
into filteredStatusStream; 

from filteredStatusStream[ ackStatus.id is null ] 
insert into failedStatusStream; 

答えて

1

あなたが実行計画の下に試行し、失敗を示すために '成功== false' にメッセージを取得している場合:

ここ
@Import('statusStream:1.0.0') 
define stream statusStream (id string, success bool); 

@Export('alertStream:1.0.0') 
define stream alertStream (alert string); 

from statusStream 
select id, success, time:timestampInMilliseconds() as ts 
insert into statusStreamWithTS; 

from every e1=statusStreamWithTS[success==false], statusStreamWithTS[success==false]*, e2=statusStreamWithTS[success==false AND (e2.ts - e1.ts) >= 500000] 
select 'some message' as alert 
insert into alertStream; 

、警報がなります私たちが5分間、「成功==偽」のメッセージを引き続き得た場合に生成されます。

関連する問題