2014-06-04 4 views
0

다음 코드로 이벤트를 보내려고하지만 등록 된 리스너에서 두 번 계속 수신하려고합니다. 리스너 등록에서 쿼리에 문제가 있거나 다른 실수가 있습니까? 조언 해 주셔서 감사합니다.Esper : 이벤트가 두 번 전송됩니까?

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()); 
+0

전체 수업을 제공 할 수 있습니까? 여기에 표시되지 않은 항목이있을 수 있습니다. – user650839

답변

0

내가 여기 어둠 속에서 자상 할게요. ...

엔진을 재사용하고 리스너를 삭제하는 것을 잊지 않는 단위 테스트와 같은 일을 할 때만 이런 일이 발생했습니다.

두 번째 유닛 테스트는 리스너에 대해 동일한 핸들러를 사용하면 두 번 호출됩니다.

그 외의 경우, 의견은 맞을 것입니다. esper에 버그가 될 가능성이 거의 없으므로 코드를 게시해야합니다.