我正在尝试通过套接字将事件发送到Esper引擎并遇到一些问题。
我已经配置了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(new TestEvent(event));
在使用SocketAdapter时,我会使用sendEvent()或事件将自动推入引擎。
答案 0 :(得分:0)
您的套接字问题似乎是JVM正在终止的通用性质,因为您没有运行任何非守护程序线程。使父线程(或套接字线程)成为非守护程序线程,JVM不会终止。 (确保你实际上可以停止线程,否则你的JVM会因关闭而顽固:))
当您使用SocketAdapter时,您的“发送客户端”远离物理EPRuntime,但您使用远程套接字通过套接字发送事件,如docs中所述。