无法通过EsperIOSocketAdapter接收事件

时间:2011-07-26 06:32:29

标签: java esper complex-event-processing

我正在尝试通过套接字将事件发送到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()或事件将自动推入引擎。

1 个答案:

答案 0 :(得分:0)

您的套接字问题似乎是JVM正在终止的通用性质,因为您没有运行任何非守护程序线程。使父线程(或套接字线程)成为非守护程序线程,JVM不会终止。 (确保你实际上可以停止线程,否则你的JVM会因关闭而顽固:))

当您使用SocketAdapter时,您的“发送客户端”远离物理EPRuntime,但您使用远程套接字通过套接字发送事件,如docs中所述。