wso2: cep: siddhi: как сделать временные окна постоянными

В настоящее время мы тестируем siddhi wso2 cep.

нам нужно иметь возможность перезапустить процесс сервера wso2 без потери данных, которые были накоплены в окне (например, временном окне).

Есть ли способ сделать временные окна постоянными, чтобы сервер мог быть перезапущен без потери его состояния?

Нужно ли настраивать сервер для использования постоянства?

Или нам просто нужно адаптировать запрос и использовать таблицу событий?

Вот образец нашего запроса:

from every data= DataInStream[state == 1] -> 
   every event = EventInStream[event.no == data.no] within 24h
       insert into duplicatesOutStream data.id as id

1 ответ

Решение

Вы можете заставить CEP сохранять свое состояние, включив снимки. Документацию можно найти здесь. Но обратите внимание, что это будет сохраняться "все состояние" CEP "периодически" (настраивается в течение нескольких минут). Так как это делается только периодически, вы можете потерять несколько последних событий, поступивших после последней операции моментального снимка. Если вы хотите, чтобы cep восстанавливался после сбоя, это самый простой вариант.

Кроме этого, нет другого способа сделать предопределенное окно постоянным. Но если вы хотите, вы можете написать свое собственное временное окно ( документацию), которое будет выполнять постоянство и подключить его к CEP.

Вместо этого вы также можете использовать таблицы событий. Когда вы используете таблицы событий, вы можете убедиться, что все поступившие события сохраняются. (но одним из недостатков этого подхода является снижение производительности по сравнению с подходом Windows + моментальные снимки).

Другие вопросы по тегам