我正在尝试从MSMQ队列中获取消息,当我在队列中有消息并且执行我的线程时,我的问题就出现了,当代码运行时它正在清理队列:
queue = new MessageQueue(queueName);
这意味着我正在覆盖拥有itens的队列,我的问题是:我怎样才能获得以前创建的队列?
修改
我正在寻找像GetPrivateQueueByLabel
这样的方法,但我没找到!
答案 0 :(得分:0)
使用以下代码代替您的代码
//queue = new MessageQueue();
if(queue.Path==null)
{
queue.Path = queueName;
}
//now use queue object for further process
以便您的队列不会被具有相同名称的先前队列替换,并且Microsoft将不允许创建具有相同名称的不同队列,因此如果已存在具有相同名称的队列,则已使用它,否则创建新队列。 另外根据您的EDIT搜索GetPrivateQueueByLabel方法,您可以使用以下代码片段返回您机器中所有专用队列的数组(或您提供的机器名称)
using System.Net;
using System.Messaging;
MessageQueue[] privatequeuelist = MessageQueue.GetPrivateQueuesByMachine(Dns.GetHostName());