2014-06-04 74 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中的錯誤。