MSMQ将消息发送到远程队列

本文关键字:程队列 队列 消息 MSMQ | 更新日期: 2023-09-27 18:20:29

我正在尝试向远程队列发送消息。我的进程没有失败,但我仍然没有在远程队列上看到消息?我想如果它不能处理消息,它会失败吗?

我确实注意到,在我的本地机器上,远程队列列在传出队列中,但也看不到消息。这里非常无知,所有的例子都表明我的做法(或者我认为)是正确的。

代码(测试简单):

    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();
}

我做错了什么?奇怪的没有错误,但在任何地方都看不到消息。将作品写入本地队列。

MSMQ将消息发送到远程队列

您在本地计算机上看到的队列是MSMQ将消息从您的计算机传输到远程计算机的方式。所以,只要上面没有消息,就不用担心。如果上面有消息表明远程队列由于某种原因不可用。

权限可能是个问题。检查远程队列的发送权限。如果呼叫是跨域的,您需要将ANONYMOUS登录添加到您的权限中。

同时尝试启用MSMQ事件日志(如果您运行的是服务器2008或更高版本)。

更新

看起来您正在调用一个公共队列地址。您应该使用专用队列。除了PRIVATE$指令之外,地址是相同的:

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

另外:您的队列名称myQueueQueue与您的队列地址中的名称相同吗?