Невозможно получить события через EsperIOSocketAdapter - PullRequest
0 голосов
/ 26 июля 2011

Я пытаюсь отправить События в движок 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 (), иначе события будут автоматически добавлены в движок.

1 Ответ

0 голосов
/ 26 июля 2011

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

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

...