Java 事件被发送两次?
我尝试用以下代码发送一个事件,但在注册的侦听器中继续接收两次。侦听器注册中的查询是否有问题,或者我是否犯了其他错误? 谢谢你的建议Java 事件被发送两次?,java,esper,complex-event-processing,Java,Esper,Complex Event Processing,我尝试用以下代码发送一个事件,但在注册的侦听器中继续接收两次。侦听器注册中的查询是否有问题,或者我是否犯了其他错误? 谢谢你的建议 System.out.println("test1"); TestEvent event = new TestEvent(foo); System.out.println("test 1.5"); epService.getEPRuntime().sendEvent(event); System.out.println("test2"); 侦听器功能 public
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());
我要在这里暗中试探一下 我只在进行单元测试时看到过这种情况,在单元测试中,我重用了引擎,却忘了删除侦听器 如果第二个单元测试对侦听器使用相同的处理程序,那么它将被调用两次
除此之外,评论可能是对的,您需要发布代码,因为这不太可能是esper中的错误。另一个可能的原因是:
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将被调用两次。您能否提供一个完整的类。这里可能没有显示出其他一些情况。