所以我们最近在重启后在我们的一台服务器上遇到了这个可怕的MSMQ错误:
消息队列服务无法启动,因为队列在 不一致的状态。有关详细信息,请参阅Microsoft知识库 文章827493 at support.microsoft.com。
这表示配置的存储位置中存储文件(* .mq)存在一些损坏。
除了完全删除所有* .mq文件以使MSMQ再次运行之外,我一直无法找到任何其他可以直接从这些文件中恢复数据的解决方案。即使重新复制.mq文件也行不通,所以我正在寻找替代方案。
据我所知,MSMQ使用内存映射文件来存储消息数据。有一个8kb索引文件l * .mq和一个匹配的4MB数据文件p * .mq。
我无法找到有关这些文件结构的更多信息,但我想知道的是,是否有办法解释索引文件,以便可以读取数据文件,我可以恢复消息数据?
我第一次尝试这样做并不是很好。我假设因为索引文件只有8kb,所以每个字节必须引用数据文件中的512字节块(因为它是4MB)。情况似乎并非如此......
非常感谢任何帮助!