WSO2 cep: как справиться с множественными соединениями?

Я пытаюсь решить простую задачу: 1. Я хочу сопоставить возникновение 3 событий A, B, C, если они произошли за последние 10 секунд.

Таким образом, Siddhi поддерживает только 2 соединения в запросе, я думаю, что не смогу это решить. В документации есть предложение использовать несколько запросов и объединять их вместе, как это

from A#window.time(10 sec) as a
join B#window.time(10 sec) as b on a.id == b.id
select a.id
insert into tempA

from tempA#window.time(10 sec) as a
join C#window.time(10 sec) as c on c.id == a.id
select *
insert into finalResult

Но это приводит к неправильным результатам, потому что данные в потоке tempA могут жить дольше, временные окна не выровнены.

Может я что-то упускаю. Любой совет? Спасибо


person e.tichy    schedule 09.10.2014    source источник


Ответы (1)


Чтобы решить эту проблему, вы можете попробовать следующий подход:

  1. Для каждого входящего события добавьте метку времени. (Вы также можете сделать это в самом клиенте, а не в cep.)
  2. Замените временные окна на внешние временные окна.
  3. Используйте ранее добавленное поле метки времени в качестве эталона времени для внешних временных окон.

Поскольку временные метки в этом случае будут глобальными, и все внешние временные окна будут работать в соответствии с ними, это должно работать правильно.

person Rajeev Sampath    schedule 10.10.2014