2010-09-16 2 views
4

Я новичок в использовании механизма событий событий 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) 

Есть ли другие варианты? Проблемы с производительностью для любого из них?

ответ

4

После некоторого взмаха, я использовал вторую идею в вопросе.

переменной необходимо установить в конфигурации, перед вводом в эксплуатацию, используя

Set<String> mySetOfValues = new HashSet<String>();

esperConfiguration.addVariable(mySourcesVariable, Set.class, mySetOfValues);

Веб-служба работает, как описано, с набором вместо массива.

Все хорошо сейчас, и производительность не является неприлично плохой, поэтому я собираюсь с ней.

Смежные вопросы