2012-01-17 168 views
7

我试图发送消息到远程队列。我的进程没有失败,但是我仍然看不到远程队列中的消息?如果它不能处理消息,我会认为它会失败?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(); 
} 

我做错了吗?奇怪...没有错误,但没有在任何地方看到消息。写入我的本地队列。

回答

12

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

可能的权限可能是一个问题。检查远程队列上的发送权限。如果通话正在跨域,您需要将ANONYMOUS LOGON添加到您的权限。

还尝试启用MSMQ事件日志(如果您正在运行服务器2008或更高版本)。

UPDATE

看起来要调用的公共队列地址。你应该使用私人队列。地址是除了PRIVATE $指令相同:

FORMATNAME:DIRECT = OS:mymachine上\ PRIVATE $ \ MyQueueQueue

ALSO:是你的队列名称myQueueQueue就像在你的队列地址?

+0

谢谢@hugh ....看看事件日志...迄今没有看到任何东西。将看看权限 – scarpacci 2012-01-17 20:00:11

+0

谢谢你,这是队列上的发送/接收烫发!我非常感谢。 – scarpacci 2012-01-17 20:04:28

+0

已更新我的答案 – 2012-01-17 20:05:31