MSMQ 无法删除或清除队列

Posted

技术标签:

【中文标题】MSMQ 无法删除或清除队列【英文标题】:MSMQ cannot delete or purge a queue 【发布时间】:2010-12-06 08:57:09 【问题描述】:

我对 MSMQ 很陌生。 我们有一个使用 MSMQ 的关键系统,由于资源不足而无法启动。看来 MSMQ 已满负荷。 我正在尝试清除消息(甚至删除不必要的队列),但在清除时收到以下错误:

无法从队列中删除所有消息。 错误:对消息队列系统的访问被拒绝。

我有哪些选择?有没有办法在服务关闭时删除队列?

【问题讨论】:

好的,似乎个别队列的权限发生了某种变化。还在想办法。 【参考方案1】:

获取 Queue Explorer 的副本 - 这是一个商业应用程序,但试用版功能齐全,在调试 MSMQ 时值得一试http://www.cogin.com/mq/

如果你没有权限,那么你就没有权限!你是盒子管理员吗?如果您转到计算机管理并右键单击您的一个私有队列并选择属性,您可以访问安全选项卡并在那里编辑/查看权限吗?

【讨论】:

我正在使用队列资源管理器。我不相信这是帐户权限,我过去能够添加/删除/清除队列。这似乎与队列太满有关。【参考方案2】:

如果您在机器上打开计算机管理,请展开服务和应用程序节点(2008 年的功能)并右键单击消息队列服务。

右键单击“属性”选项并将其打开到“常规”选项卡。

您可以指定消息的存储限制——您可能已经达到消息存储的上限。如果您暂时增加此值,它可能会允许您返回消息传递系统,以便清除这些队列并恢复操作。

如果做不到这一点,如果您可以处理消息丢失的问题(如果您尝试清除,我认为没问题),也许可以删除队列并重新创建它。

【讨论】:

是的,在提高服务配额后,我能够访问队列。虽然似乎存在次要问题,即我使用的帐户也失去了权限,但尝试读取队列的服务拥有权限,并且可以在提高配额后这样做。顺便说一句,这是在 MSMQ 2.0 上。【参考方案3】:

有一个更简单的方法:

在机器上打开计算机管理, 扩展服务和应用程序节点(2008 年的功能), 扩展消息队列服务, 展开私人队列文件夹, 扩展您正在使用的私有队列, 右键单击队列消息文件夹并 点击清除选项。

【讨论】:

【参考方案4】:

我认为存在版权问题。

您无法授予权限,然后执行以下步骤以强制删除队列。

    停止关注服务
Message Queuing Triggers,
Net.Msmq Listener Adapter
Message Queuing.

    转到 C:\Windows\System32\msmq\storage\lqs

    现在在记事本或记事本++中打开文件

    QueueName=\private$\YourQueueName查看队列名称

    删除文件之前backup the file。现在delete that file

    不要删除没有您的队列名称的其他文件。

    风险自负。

    现在开始关注服务

Message Queuing Triggers,
Net.Msmq Listener Adapter
Message Queuing.

这个技巧对我有用...

【讨论】:

在发现我有一个问题,其中一个应用程序创建了 3 个私有队列,但我无法访问它们,即使我的帐户在本地管理员组中,我尝试了上述建议的解决方案,但是稍微不一样。我没有备份和删除文件,而是通过添加“.save”扩展名来重命名它们。重新启动所有 MSMQ 服务后,队列在计算机管理中被列为丢失或无法访问。我关闭了 MSMQ 服务,将文件移出目录,重新启动了 MSMQ 服务,现在队列确实消失了。

以上是关于MSMQ 无法删除或清除队列的主要内容,如果未能解决你的问题,请参考以下文章

为其他用户创建的专用队列设置 MSMQ 权限

如何安装消息队列

电脑里出现未安装消息队列应该怎么处理

无法在 Windows 2012 MSMQ 中连接 Winsoc 套接字

如何清空Windows消息队列

软件无法卸载或删除