У меня вопрос об использовании предложения вывода в сочетании с именованным окном, шаблонами и вставкой в оператор. Моя цель - обнаружить отсутствие события, сохранить его в именованном окне, и когда события начнут появляться снова, выберите и удалите строку и используйте ее как индикатор «онлайн» (см. Esper - detect event after absence) Я как-то хочу быть в состоянии ограничить скорость событий, когда в течение короткого периода времени происходит несколько автономных онлайн-событий (отключить ложные срабатывания). Я думал, что предложение вывода может помочь здесь, но когда я использую это в вставке в оператор, никакие события не хранятся в именованном окне. Это правильный подход или есть другой способ ограничить события в этом сценарии?Предложение выхода esper с именованными окнами
Это мой код в Esper EPL онлайн:
create schema MonitorStats(id string, time string, host string, alert string);
create window MonitorWindow.win:keepall() as select id, alert, time, host from MonitorStats;
insert into MonitorWindow select a.id as id, 'offline' as alert, a.time as time, a.host as host from pattern
[every a=MonitorStats(id='1234') -> (timer:interval(25 sec) and not MonitorStats(id=a.id))];
on pattern[every b=MonitorStats(id='1234') -> (timer:interval(25 sec) and MonitorStats(id=b.id))]
select and delete b.id as id, 'online' as alert, b.time as time, b.host as host from MonitorWindow as win
where win.id = b.id;
Спасибо за предложение. Я добавил свои онлайн-заявления EPL. В вашем примере я все еще получаю несколько «онлайн» выходов. Есть ли способ упростить приведенные выше утверждения и использовать первое предложение вывода для событий «офлайн» и «онлайн»? – user5526698
по шаблону [...] вставить в DetectedStream select and delete ....; выберите * из файла DetectedStream сначала каждые 10 секунд; (послушайте последнее заявление) – goodie
Спасибо, но с таким подходом я получаю первое «офлайн-событие» из DetectedStream, но не первое «офлайн» - «онлайн» пару событий? Как мне это достичь? – user5526698