2010-06-24 4 views
2

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

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

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

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

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

Благодаря Matt

ответ

1

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

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

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

Благодаря Matt

0

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

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

Open Source интеграция: http://fusesource.com

+0

Спасибо Тим, к сожалению, я определенно вызов Start, и я установил мой издатель, чтобы отправить сообщение каждые 30 секунд ... – citizenmatt

+0

Вы можете разместить свой исходный код для пользователей ActiveMQ группу, я посмотрю и посмотрю, что происходит. С уважением Тим. Интеграция с открытым исходным кодом: http://fusesource.com –

+0

Спасибо за помощь - получается, что это была половина моей ошибки и половина вопросов с форматами проводов ... – citizenmatt