Невозможно получить события через EsperIOSocketAdapter

Я пытаюсь отправить события в движок 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(новый TestEvent(событие));

При использовании SocketAdapter следует использовать sendEvent(), иначе события будут автоматически отправлены в движок.


person Vinesh    schedule 26.07.2011    source источник


Ответы (1)


Ваша проблема с сокетом, по-видимому, носит общий характер, когда JVM завершает работу, потому что у вас нет запущенных потоков, отличных от демона. Сделайте родительский поток (или поток сокета) потоком, отличным от демона, и JVM не завершится. (Убедитесь, что вы действительно можете остановить поток, иначе ваша JVM будет упрямо отключаться :))

Когда вы используете SocketAdapter, ваш «клиент-отправитель» удален от физического EPRuntime, но вы используете удаленный сокет для отправки событий через сокет, как указано в документы.

person Nicholas    schedule 26.07.2011