清空MSMQ队列

时间:2014-03-05 17:50:56

标签: c# queue message-queue msmq

我正在尝试从MSMQ队列中获取消息,当我在队列中有消息并且执行我的线程时,我的问题就出现了,当代码运行时它正在清理队列:

queue = new MessageQueue(queueName);

这意味着我正在覆盖拥有itens的队列,我的问题是:我怎样才能获得以前创建的队列?

修改

我正在寻找像GetPrivateQueueByLabel这样的方法,但我没找到!

1 个答案:

答案 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());