2011-07-26 29 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中所述。