0

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

4

1 回答 1

0

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

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

于 2011-07-26T19:03:18.430 回答