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将被调用两次。

您能否提供一个完整的类。这里可能没有显示出其他一些情况。