Не могат да се получават събития чрез 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