6

我看到一个非常奇怪的错误,我很难追踪。我认为它与我的 Rhino ESB 配置有关,虽然我不确定 RSB 是否真的导致它,所以我想我会问其他人是否在 MSMQ 的任何其他用法中遇到过这个问题。

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

我通过全能的 Google 找到的唯一信息是对 MSMQ 2.0 中问题的引用(此问题发生在 MSMQ 4.0 中)。我已经验证在服务和网站中都在关闭时在总线上调用 Dispose。

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

4

4 回答 4

8

我在 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) 启动您的应用程序

于 2011-06-01T18:59:41.240 回答
1

在我的场景中,我已经能够在 MSMQ 服务重新启动后修复“队列处于不一致状态”错误。结果发现计算机名称太长,因此将计算机名称更改为少于 15 个字符的名称解决了该问题。

于 2015-12-15T08:45:24.147 回答
0

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

编辑 在没有更多问题的一周之后,我可以自信地说提高服务器上的 RAM 解决了我们的 MSMQ 的“状态不一致”问题。请注意,我们确实必须先重新安装 MSMQ——但问题再也没有出现,并且在 RAM 更新之前,问题每 2 天就会出现一次。

于 2011-03-15T09:55:26.197 回答
0

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

我经常遇到的两个问题是:

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

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

  1. 将 msmq 文件夹重命名为 msmq_old
  2. 净停止 wuauserv
  3. 净停止位
  4. 删除“%windir%\softwaredistribution”目录
  5. 重启

这种情况今年已经发生了 5 次,并且每次都出现上述各种情况,并有大量的重新启动。

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

按照上面的步骤可以帮助解决这个问题。

于 2015-09-17T08:15:28.180 回答