MSMQ:是否可以获取远程专用队列的消息计数?

时间:2011-05-05 00:51:51

标签: msmq system.messaging

我知道还有其他问题,但实际上并没有回答这个问题。

我的守则是:

using (var mQ = new MessageQueue(qPath))
            {
                Console.WriteLine("machine: {0}, name : {1}, path : {2}", mQ.MachineName ,mQ.QueueName, mQ.Path);
                Console.WriteLine("message count : {0}",mQ.GetAllMessages().Count());
            }    

当我在本地队列上尝试 GetAllMessages()时,当然一切正常:

string qPath = @".\private$\queueName";

但是,当我在同一个域上的远程计算机上尝试队列时,我只能使用计算机名称成功ping通,我收到此错误:

Invalid queue path name. at System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath

我试过了:

string qPath = @"remoteMachineName\private$\queueName";
string qPath = @"remoteMachineName.qualified.net\private$\queueName";
string qPath = @"DIRECT=OS:remoteMachineName.qualified.net\private$\queueName";
string qPath = @"DIRECT=OS:remoteMachineName\private$\queueName";
string qPath = @"DIRECT=OS:ip.ad.re.ss\private$\queueName";
string qPath = @"DIRECT=TCP:ip.ad.re.ss\private$\queueName";

所有这些都给了我同样的错误。

网上的文档说明如果你知道完整的“路径”,就可以找到私人队列。

这是真的吗?如果是这样,如何编译完整路径??

欢呼声

3 个答案:

答案 0 :(得分:1)

该异常表明由于某种原因,路径名无法转换为格式名称。 尝试使用格式名称

创建队列 http://msdn.microsoft.com/en-us/library/ch1d814t.aspx

比如,例如,Formatname:DIRECT = OS:ip.ad.re.ss \ private $ \ queueName

干杯 约翰

答案 1 :(得分:0)

访问this页面

"FormatName:Direct=OS:machinename\\private$\\queue"

答案 2 :(得分:0)

是的,你错过了FormatName。例如“FORMATNAME:直接= OS:本地主机\私人$ \消息”