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将消息从您的计算机传输到远程计算机的方式。所以,只要上面没有消息,就不用担心。如果上面有消息表明远程队列由于某种原因不可用。
权限可能是个问题。检查远程队列的发送权限。如果呼叫是跨域的,您需要将ANONYMOUS登录添加到您的权限中。
同时尝试启用MSMQ事件日志(如果您运行的是服务器2008或更高版本)。
更新
看起来您正在调用一个公共队列地址。您应该使用专用队列。除了PRIVATE$指令之外,地址是相同的:
FormatName:DIRECT=OS:mymachine''PRIVATE$''MyQueueQueue
另外:您的队列名称myQueueQueue与您的队列地址中的名称相同吗?