2013-03-27 3 views
3

Я попытался использовать NServiceBus версии 3 для получения сообщений, отправленных в очередь MSMQ с удаленной клиентской машины. Клиент находится в том же домене, что и машина, на которой существует очередь назначения. Эта последняя машина запускает Windows Server 2008 R2 (MSMQ версии 5.0) в качестве операционной системы. учитывая документацию NServiceBus, я указал имя конечной точки в форме «QueueName @ MachineName». Однако сообщения не были отправлены в указанную очередь. Казалось, что свойство «Transactional» класса MessageQueue вызвало проблему. Поэтому я обошел доступ к этому свойству в исходном коде NServiceBus. В результате сообщения были успешно отправлены, но получено ответное сообщение на стороне клиента. Точнее, когда я смотрю на информацию о сообщении в окне диспетчера сервера, имя очереди ответа пуст. Это происходит только тогда, когда сообщения отправляются удаленно. Похоже, что я неправильно установил некоторые конфигурации. Я хочу знать, какую конфигурационную информацию мне нужно предоставить, чтобы NServiceBus работал в указанном контексте. Кроме того, есть ли пример проекта, который демонстрирует, как использовать NServiceBus для отправки сообщений в удаленную очередь и получения соответствующих ответных сообщений.Как настроить NServiceBus для работы с удаленными очередями MSMQ?

+0

Вы пытаетесь сделать удаленный прием? Если это так, NSB получает только из локальных очередей. –

+0

Нет, я просто хочу отправить сообщения удаленно (т. Е. Отправить их в удаленную очередь). Фактически получение осуществляется локально NServiceBus, и ожидается, что новое сообщение будет отправлено в ответ на полученный. –

ответ

3

Если вы настроили клиентский процесс как конечную точку только для отправки, то он не будет включать адрес возврата в отправляемые им сообщения, что означает, что сервер не сможет ответить. При этом я не думаю, что это твоя проблема.

Вам следует попробовать запустить образец Full Duplex, который поставляется с NServiceBus на ваших машинах, чтобы убедиться, что он работает правильно. Если это не так, значит, у вас более сложная проблема установки на тех машинах, которые необходимо исправить.

+0

Большое спасибо за ваш ответ. Я попробовал образец «FullDuplex», и та же проблема все еще существует. Чтобы быть более конкретным, он выдает исключение, в котором говорится: 'Невозможно перевести имя формата в независимое имя: PRIVATE = b95d7982-6157-462e-9c6c-15275ecc214f \ 00000088'. GUID, за которым следует номер очереди, правильно ссылается на клиентскую машину, на которой существует очередь ответов. Однако кажется, что существует проблема с получением свойства QueueName в очереди ответов. Исключение происходит в методе 'NServiceBus.Utils.MsmqUtilities.GetIndependentAddressForQueue (MessageQueue q)'. –

+2

Тогда, скорее всего, ваша установка MSMQ не очень хорошая. Скорее всего, вы включили интеграцию с Active Directory, и ее необходимо отключить. –

+0

Большое спасибо, Уди, за вашу помощь и внимание. Отключив «Интеграцию службы каталогов», система теперь работает так, как ожидалось. –

Смежные вопросы