MSMQ Отправить сообщение в удаленную очередь - PullRequest
9 голосов
/ 17 января 2012

Я пытаюсь отправить сообщение в удаленную очередь.Мой процесс не дает сбоя, но я все еще не вижу сообщения в удаленной очереди?Я бы предположил, что он потерпит неудачу, если не сможет обработать сообщение?

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

Код (простой для теста):

    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 Ответ

14 голосов
/ 17 января 2012

Очередь, которую вы видите на локальном компьютере, - это то, как MSMQ передает сообщение с вашего компьютера на удаленный компьютер.Так что не беспокойтесь об этом, пока на нем нет сообщений.Если бы на нем были сообщения, указывающие на то, что удаленная очередь по какой-то причине недоступна.

Вероятно, проблема может возникнуть с разрешениями.Проверьте разрешения на отправку в удаленной очереди.Если вызов идет между доменами, вам нужно добавить ANONYMOUS LOGON в ваши разрешения.

Также попробуйте включить журнал событий MSMQ (если вы работаете с сервером 2008 или выше).

ОБНОВЛЕНИЕ

Похоже, вы звоните в публичный адрес очереди.Вы должны использовать частные очереди.Адрес тот же, за исключением директивы PRIVATE $:

FormatName: DIRECT = OS: mymachine \ PRIVATE $ \ MyQueueQueue

ТАКЖЕ: имя вашей очереди myQueueQueue похожев вашей очереди адрес?

...