【问题标题】:Empty MSMQ queue空 MSMQ 队列
【发布时间】:2014-04-07 22:58:39
【问题描述】:

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

queue = new MessageQueue(queueName);

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

编辑:

我在找GetPrivateQueueByLabel之类的方法,但是没找到!

【问题讨论】:

  • 如果可以,将队列(第一次创建时)保存为类级别变量。虽然我不确定MessageQueue 是否是线程安全的......所以无论你如何从多个线程访问同一个队列,你都可能会遇到问题。

标签: c# queue message-queue msmq


【解决方案1】:

使用以下代码代替您的代码

//queue = new MessageQueue();

if(queue.Path==null)
{
     queue.Path = queueName;
}
//now use queue object for further process

这样您的队列就不会被以前的同名队列替换,Microsoft 将不允许创建同名的不同队列,因此如果同名队列已经存在,则它已被使用,否则将创建新队列。 此外,根据您的编辑,您搜索 GetPrivateQueueByLabel 方法,除此之外,您可以使用以下代码 sn-p 返回机器中所有私有队列的数组(或您提供的机器名称)

using System.Net;
using System.Messaging;

MessageQueue[] privatequeuelist = MessageQueue.GetPrivateQueuesByMachine(Dns.GetHostName());

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2011-05-01
    • 2016-08-10
    • 2013-05-08
    • 2014-07-22
    相关资源
    最近更新 更多