Я новичок в использовании механизма событий событий Esper в Java. Сценарий заключается в том, что события поступают как POJO. У них есть поле, которое я хочу фильтровать. Отфильтрованные значения будут меняться со временем. Я бы предпочел не удалять и вставлять новое заявление каждый раз, когда происходит изменение.Использование Esper, как я могу выполнять динамическую фильтрацию событий?
Пример:
Событие называется 'MyEvent', и имеет поле 'источник'. Значение может быть одним из «home» ',' Работа ', или' Школа '. Веб-сервис позволяет пользователям изменять значения для «источника» они заинтересованы в. EPL заявление будет выглядеть
select * from MyEvent where source in ('home', 'school')
Так в любое время, «школы» могут быть удалены, а также влияние должны отражаться как можно быстрее. Вопрос в том, как лучше всего это сделать? Я исключал кэширование запросов к базе данных из-за задержки между обновлением.
Идеи:
1) Есть поток под названием 'SourcesOfInterest' с полем A 'источников' из списка типов, а также изменить заявление быть: SourcesOfInterest
select * from MyEvent where source in (SourcesOfInterest.win:length(1).sources)
веб-служба вставляет» 'события в этот поток, где просматриваются только самые последние. Даже не уверен в правильности синтаксиса.
2) Приведите инструкцию к переменной времени выполнения. Тогда утверждение будет:
select * from MyEvent where source in (mySourcesVariable)
Веб-сервис будет вызывать
EPRuntime.setVariableValue("mySourcesVariable", myArrayOfSources)
Есть ли другие варианты? Проблемы с производительностью для любого из них?