我正在尝试将消息发送到远程队列。我的进程没有失败,但我仍然没有看到远程队列上的消息?如果无法处理消息,我会认为它会失败吗?
我注意到在本地计算机上远程队列列在Outgoing队列中,但是也没有看到消息。这里非常无知,所有的例子都表明我正在做的事情(或者我认为)是正确的。
代码(简单测试):
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();
}
我做错了什么?奇怪......没有错误,但在任何地方都看不到消息。写入工作到我的本地队列。
答案 0 :(得分:14)
您在本地计算机上看到的队列是MSMQ如何将消息从您的计算机传输到远程计算机。所以只要没有消息就不要担心。如果有消息表明远程队列由于某种原因不可用。
可能的权限可能是一个问题。检查远程队列上的发送权限。如果呼叫是跨域调用,则需要将ANONYMOUS LOGON添加到您的权限中。
还尝试启用MSMQ事件日志(如果您运行的是服务器2008或更高版本)。
<强>更新强>
看起来您正在调用公共队列地址。你应该使用私人队列。除了PRIVATE $指令外,地址相同:
FORMATNAME:DIRECT = OS:mymachine上\ PRIVATE $ \ MyQueueQueue
另外:您的队列名称 myQueueQueue 就像您的队列地址一样吗?