重启后MSMQ不一致状态

时间:2010-04-06 16:02:31

标签: asp.net msmq rhino-tools

我看到一个非常奇怪的错误,我很难过 追踪。我认为它与我的Rhino ESB配置有关,虽然我不确定 如果RSB实际上是造成它,所以我想我会问,看看是否 在MSMQ的任何其他用法中,其他任何人都遇到过这种情况。

我在网络应用程序中使用RSB作为客户端(ASP.NET,客户端在后台运行)。客户端通过RSM的MSMQ绑定与Windows服务进行通信。重新启动服务似乎永远不会对MSMQ产生影响,也不会手动重启IIS。但是,每当我实际重启计算机本身时,MSMQ总是拒绝重新启动,声称“队列处于不一致状态”。尝试手动启动MSMQ会导致相同的错误,从而有效地使MSMQ安装完全无用。解决它的唯一方法是实际删除然后重新安装MSMQ。

我通过全能Google找到的唯一信息是MSMQ 2.0中的问题(MSMQ 4.0中出现此问题)。我已经在服务和网站上验证了在关闭时在公交车上调用Dispose。

有谁知道为什么会发生这种情况?谢谢!

4 个答案:

答案 0 :(得分:4)

我在Window 2008 Server(虚拟机)上遇到了同样的问题。虽然环境与犀牛工具无关。

事件日志中的错误: “消息队列服务无法启动,因为队列处于不一致状态。有关详细信息,请参阅support.microsoft.com上的Microsoft知识库文章827493。”

罗伊指出,这种情况每2-3天就会发生一次。每次我们按照以下步骤进行恢复 - 而不是重新安装MSMQ。

1)停止使用MSMQ的所有应用程序和服务 2)从任务管理器中杀死mqsvc.exe 3)转到C:\ Windows \ System32 \ msmq \ storage并删除任何.mq文件
4)启动MSMQ服务
4)开始申请

答案 1 :(得分:1)

在我的场景中,我已经能够在MSMQ服务重启后修复“队列处于不一致状态”错误。 事实证明计算机名称太长,因此将计算机名称更改为少于15个字符的名称可以解决此问题。

答案 2 :(得分:0)

我的团队遇到了类似的问题,MSMQ被NSB 2.5调用。在基础架构将我们的VM迁移到另一台物理服务器并出于某种原因降低可用RAM之后,最近出现了这个问我们认为这个问题可能与记忆有关。

修改 经过一周没有更多的问题,我可以自信地说,在服务器上提高RAM解决了我们MSMQ的“不一致状态”问题。请注意,我们确实必须首先重新安装MSMQ - 但问题永远不会回来,在RAM更新之前,问题每2天就会出现一次。

答案 3 :(得分:0)

在Windows 2008RC2上,MSMQ经常在重启后无法启动。

对我来说,两个常见问题是:

“消息队列服务无法启动,因为队列处于不一致状态” 和 “依赖服务不存在或已被标记为删除”

有时,以下内容有所帮助(尽管我们正在寻求更加可靠的答案)

  1. 将msmq文件夹重命名为msmq_old
  2. net stop wuauserv
  3. 净停止位
  4. 删除“%windir%\ softwaredistribution”目录
  5. 重新启动
  6. 今年已经发生了5次,而且每次都有上述各种各样的重启。

    有时,我们会恢复删除功能/添加功能,但您可能会陷入循环。在启动时,Windows更新服务中会发生回滚,因此永远不会卸载该功能,并且永远不会修复该问题。

    按照上述步骤可以提供帮助。