ActiveMQ + NMS не может принимать сообщения


Я пытаюсь использовать сообщения по теме ActiveMQ из приложения C#. Я использую версию 1.3 .net, и я не получаю никаких сообщений.

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

Я использую код, скопированный и вставленный из http://remark.wordpress.com/articles/publish-subscribe-with-activemq-and-nms/ как мой тест. SimpleTopicSubscriber (с простым изменением, чтобы сделать его недолговечным потребителем) просто ничего не получает. SimpleTopicPublisher работает просто отлично - я могу отправить простое сообщение, и оно пройдет, без проблем.

Глядя на консоль JMX, я вижу, что мой абонент подключается, видит, что он находится в нужной теме, но он просто не получает никаких сообщений.

Есть идеи? Я даже ... пробовал использовать библиотеки 1.2, но это не имело никакого значения.

Спасибо Matt

2 2

2 ответа:

Оказалось, что было 2 проблемы. Я неверно отредактировал пример кода и передал вместо селектора долговременный идентификатор потребителя. Не очень умно.

Как только я исправил это,я мог получать сообщения, но только с выпуском 1.1 библиотек DLL NMS/ActiveMq. Я не мог получать сообщения с версией 1.2 или 1.3.

Но если я передам wireformat.version=2 в качестве параметра при подключении все работает нормально. Брокер 5.0.0, и я сильно подозреваю, что это будет нормально работать с более поздним версия брокера.

Спасибо Matt

Есть несколько причин, по которым ваш клиент может не получать сообщения, одна из них может заключаться в том, что вы не вызывали соединение.Start (), без этого насос сообщений не начнет отправлять сообщения вашему клиенту. Другая причина может заключаться в том, что ваш теперь недолговечный подписчик темы был запущен после издателя, и в этом случае сообщения не будут доставлены, так как вы используете тему, а темы похожи на очереди в том, что как только сообщение отправлено, о нем забывают, поэтому подписчик, который присоединяется up later не получает никаких сообщений, которые были отправлены до его подписки.

С уважением Тим.

Интеграция с открытым исходным кодом: http://fusesource.com