Siddhi CEP - события, которые не были объединены в скользящее окно

У меня есть два потока, streamA и streamB. Каждый из streamA имеет идентификатор, и соответствующее событие в streamB будет иметь такой же идентификатор.

Я хочу узнать от streamA, какие идентификаторы не пришли streamB после скользящего окна, скажем, 1 минуты.

Я пробовал это, но не получилось:

from streamA as A join streamB#window.time(1 min) as B on A.id == B.id select S.Id insert expired events into streamC;

Дайте мне знать, как решить эту проблему.


person spiralarchitect    schedule 27.05.2016    source источник
comment
Есть ли у вас гарантия такого порядка событий, что событие потока A всегда будет после соответствующего события из потока B или наоборот?   -  person Tishan    schedule 30.05.2016
comment
@ Тишан: Да. Гарантия есть.   -  person spiralarchitect    schedule 30.05.2016


Ответы (1)


Вы можете использовать внешнее соединение [1], чтобы выполнить это требование. Бывший:

from streamA as A left outer join streamB#window.time(1 min) as B on A.id == B.id select A.Id, B.Id insert into streamC;

В приведенном выше запросе, если в окне нет соответствующих событий, B.Id будет нулевым. Таким образом, вы можете написать еще один запрос для использования streamC, чтобы изолировать события с нулевыми атрибутами и обработать их дальше.

[1]https://docs.wso2.com/display/CEP410/SiddhiQL+Guide+3.0#SiddhiQLGuide3.0-Outerjoins

person Tishan    schedule 30.05.2016