Еспър: Събитието се изпраща два пъти?

Опитвам се да изпратя събитие със следния код, но продължавам да го получавам два пъти в регистрирания слушател. Може би има нещо нередно със заявката в регистрацията на слушателя или има друга грешка, която съм направил? Благодаря за всеки съвет!

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