MSMQ Отправить сообщение в удаленную очередь
Я пытаюсь отправить сообщение в удаленную очередь. Мой процесс не дает сбоя, но я все еще не вижу сообщения в удаленной очереди? Я предположил бы, что это потерпит неудачу, если это не могло обработать сообщение?
Я заметил, что на моем локальном компьютере удаленная очередь указана в "Исходящих", но сообщений там тоже не видно. Очень невежественен здесь, и все примеры показывают, что то, что я делаю (или я так полагаю), правильно.
Код (простой для тестирования):
using (var transaction = new TransactionScope())
{
using (var queue = new MessageQueue(@"FormatName:DIRECT=OS:mymachine\MyQueueQueue"))
{
XDocument xdoc = XDocument.Parse("<root/>");
var message = new Message(xdoc.ToString());
queue.Send(message, MessageQueueTransactionType.Single);
}
transaction.Complete();
}
Console.Read();
}
Что я делаю не так? Странно... без ошибок, но нигде не вижу сообщений. Пишите работы в мою локальную очередь.
1 ответ
Очередь, которую вы видите на локальном компьютере, - это то, как MSMQ передает сообщение с вашего компьютера на удаленный компьютер. Так что не беспокойтесь об этом, пока на нем нет сообщений. Если бы на нем были сообщения, указывающие на то, что удаленная очередь по какой-то причине недоступна.
Вероятно, разрешения могут быть проблемой. Проверьте разрешения на отправку в удаленной очереди. Если вызов идет между доменами, вам необходимо добавить ANONYMOUS LOGON в ваши разрешения.
Также попробуйте включить журнал событий MSMQ (если вы работаете с сервером 2008 или выше).
ОБНОВИТЬ
Похоже, вы звоните в публичный адрес очереди. Вы должны использовать частные очереди. Адрес тот же, за исключением директивы PRIVATE$:
FORMATNAME:DIRECT=OS: моя_машина \PRIVATE$\MyQueueQueue
ТАКЖЕ: ваше имя очереди myQueueQueue как в вашем адресе очереди?