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 как в вашем адресе очереди?

Другие вопросы по тегам