Эспер: Событие отправляется дважды?

Я пытаюсь отправить событие со следующим кодом, но дважды получаю его в зарегистрированном прослушивателе. Может быть, что-то не так с запросом в регистрации слушателя или я сделал какую-то другую ошибку? Спасибо за любой совет!

System.out.println("test1");
TestEvent event = new TestEvent(foo);
System.out.println("test 1.5");
epService.getEPRuntime().sendEvent(event);
System.out.println("test2");

Функция слушателя

public void update(EventBean[] newEvents, EventBean[] oldEvents) {
        LOG.info("TestEvent detected!");
        System.out.println("hallo");
    }

Лог-файл выглядит так:

test1
test 1.5
INFO - TestEvent detected!
hello
INFO - TestEvent detected!
hello
test2

Регистрация слушателей:

// Register listener
EPStatement stmt = this.getEPServiceProvider().getEPAdministrator().createEPL("select * from TestEvent");
stmt.addListener(new TestEventListener());

person Chaoz77    schedule 04.06.2014    source источник
comment
Не могли бы вы предоставить полный класс. Вероятно, здесь происходит что-то еще, не показанное здесь.   -  person user650839    schedule 06.06.2014


Ответы (2)


Я беру удар в темноте здесь ....

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

Затем второй модульный тест будет вызываться дважды, если он использует один и тот же обработчик для слушателя.

Кроме этого, комментарий, вероятно, правильный, вам нужно опубликовать свой код, так как очень маловероятно, что это ошибка в esper.

person chollida    schedule 23.06.2014

Другая возможная причина:

EPStatement statement = admin.createEPL(create window 
TestEventWindow.win:time(1 day) (...));
statement.addListener(TestEventListener());

EPStatement stmt = admin.createEPL("select * from TestEventWindow");
stmt.addListener(new TestEventListener());

При поступлении нового события или изменении свойств в TestEventWindow update() будет вызываться дважды.

person winbill    schedule 01.05.2018