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();

もう1つの疑問は、コードを介してイベントを送信するために使用したSocketAdapterを使用しないプログラムにあります

EPRuntime.sendEvent(new TestEvent(event));

SocketAdapterを使用している間、sendEvent()を使用する必要があります。そうしないと、イベントが自動的にエンジンにプッシュされます。

4

1 に答える 1

0

ソケットの問題は、デーモン以外のスレッドが実行されていないため、JVM が終了している一般的な性質のもののようです。親スレッド (またはソケット スレッド) を非デーモン スレッドにすると、JVM は終了しません。(実際にスレッドを停止できることを確認してください。そうしないと、JVMがシャットダウンについて頑固になります:))

SocketAdapter を使用する場合、「送信側クライアント」は物理 EPRuntime に対してリモートにありますが、リモート ソケットを使用してソケット経由でイベントを送信します

于 2011-07-26T19:03:18.430 に答える