Принудительный вывод в Esper - PullRequest
3 голосов
/ 27 января 2010

У меня есть конфигурация Esper не в реальном времени, где я передаю поток, который я читаю из файла. Я пытаюсь создать выражение, которое вычисляет статистику по всему потоку и выводит одно значение в самом конце. Например, в Esper есть семантика для принудительного вывода представления каждые X секунд, но есть ли семантика для запроса представления или механизма «сбрасывать» вывод, когда вы знаете, что больше нет событий для подачи.

Ответы [ 2 ]

8 голосов
/ 27 января 2010

Оказывается, что хотя бы один из способов сделать это - использовать предложение output с переменным триггером.

Выражение будет:

select count(*) as totalCount from events output last when OutputSummary = true

Переменная OutputSummary будет инициализирована следующим образом:

epConfiguration.addVariable("OutputSummary", Boolean.class, "false");

Когда вы будете готовы к сбросу, установите для переменной значение true следующим образом:

epRuntime.setVariableValue("OutputSummary", true);
long currentTime = epService.getEPRuntime().getCurrentTime();
epRuntime.sendEvent(new CurrentTimeEvent(currentTime));

Для отправки выражения необходимо отправить другое временное событие.

0 голосов
/ 30 марта 2015

Когда вывод требуется каждые 60 секунд, тогда выражение будет:

select emplyee_id from employees output snapshot every 60 sec

и когда для вывода требуется каждые 10000 событий, выражение будет:

select emplyee_id from employees output snapshot every 10000 events
...