2011-07-26 28 views
0

我試圖通過套接字將事件發送到Esper引擎並遇到一些問題。無法通過EsperIOSocketAdapter接收事件

我已經配置了EsperIOSocketAdapter屬性,並且在調用EsperIOSocketAdapter.start()方法時,它會啓動一個新的守護進程線程,它將偵聽客戶端,但守護程序線程退出,因爲父線程在套接字客戶端實際嘗試連接之前退出。

我的代碼片段如下:

  ConfigurationSocketAdapter adapterConfig = new ConfigurationSocketAdapter(); 

      SocketConfig socket = new SocketConfig(); 
      socket.setDataType(DataType.CSV); 
      socket.setPort(6789); 
      adapterConfig.getSockets().put("CourseSocket", socket); 


      EsperIOSocketAdapter socketAdapter = new EsperIOSocketAdapter (adapterConfig, "CourseSocket"); 
      socketAdapter.start(); 

另一個疑問是程序,而無需使用SocketAdapter我使用過的代碼

EPRuntime.sendEvent(新TestEvent(事件))發送事件;

雖然使用SocketAdapter,但我使用sendEvent()或事件會自動推入引擎。

回答

0

由於您沒有任何非守護線程正在運行,因此您的套接字問題似乎具有通用性,因爲JVM正在終止。使父線程(或套接字線程)成爲非守護線程,並且JVM不會終止。 (確保你實際上可以停止線程,否則你的JVM會固執地關閉:))

當你使用SocketAdapter時,你的「發送客戶端」對於物理EPRuntime是遠程的,但是你使用遠程套接字來通過套接字發送事件,如docs中所述。