ActiveMQ + NMS не может получать сообщения - PullRequest
2 голосов
/ 24 июня 2010

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

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

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

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

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

Спасибо Matt

Ответы [ 2 ]

1 голос
/ 28 июня 2010

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

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

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

Спасибо, Мэтт

0 голосов
/ 25 июня 2010

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

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

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

...