Я реализовал espertech CEP в своем проекте, и все отлично работает, однако я хотел бы показать список всех инициированных событий. Позволяет ли это эспертех?
Как получить список сработавших событий в espertech CEP
comment
Каковы варианты использования и заявление EPL, которые у вас есть на данный момент? Я спрашиваю, потому что в зависимости от того, является ли это шаблоном, агрегацией или чем-то еще, что вы можете сделать, ответ может зависеть. И что такое триггерные события? Это выходные события или события, которые приходят и запускают что-то или?
- person goodie   schedule 30.11.2016
comment
Я использую UpdateListener для запуска действий в соответствии с потоком данных, который я определил в операторе запроса события. UpdateListner работает, но мне нужен список каждый раз, когда он вызывается. Например: когда значение больше 1, срабатывает updatelistener и распечатывает информацию о событии. Пока я говорю о простых событиях
- person user1281678   schedule 30.11.2016
comment
Хорошо, список каждый раз, когда он вызывается, означает для меня какой-то журнал, когда слушатель вызывается, кажется, что слушатель может просто записать это?
- person goodie   schedule 01.12.2016
comment
Да, я также делаю это, но я спрашиваю, поскольку CEP также представляет собой таблицу, как запросить механизм CEP, чтобы получить список инициированных событий.
- person user1281678   schedule 02.12.2016
Ответы (1)
Насколько мне известно, по умолчанию CEP ничего не предоставляет.
Но вы всегда можете сделать это, используя HashMap<String, List<EventBean>>
.
Быстрый пример будет выглядеть так:
HashMap<String, ArrayList<EventBean>> eventsNeeded = new HashMap<String, List<EventBean>>();
Configuration configuration = new Configuration();
configuration.addEventType("Event", IEvent.class);
EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(configuration);
EPRuntime runtime = engine.getEPRuntime();
EPAdministrator admin = engine.getEPAdministrator();
engine.initialize();
int limit = 30;
String query = "Select instanceId, qty from Event where netValue >" + limit;
eventsNeeded.put(query, new ArrayList<EventBean>());
admin.createEPL(query).addListener((eventBeans, eventBean1) -> {
for (EventBean eventBean : eventBeans) {
eventsNeeded.get(query).add(eventBean);
}
});
sendEvent(runtime, new Event("X", 10, 1, 100, "A"));
sendEvent(runtime, new Event("X", 20, -1, 100.0, "A"));
sendEvent(runtime, new Event("X", 15, 1, 100.0, "B"));
//You can use eventsNeeded here
person
impossible
schedule
10.12.2017