【发布时间】:2014-01-20 12:34:15
【问题描述】:
我有一个在 Win2008 R2 上运行的私有、非事务性消息队列。当我执行以下操作时队列中断:
-
将可恢复的消息放在队列中,如下所示:
Message msg = new Message { Body = "hello", Formatter = new XmlMessageFormatter(), Label = "Notification", Recoverable = true, AppSpecific = 123 }; mq.Send(msg);不要检索消息!
- 重新启动消息队列服务
-
服务没有成功重启。事件查看器中记录了以下消息:
The Message Queuing service cannot start because a queue is in an inconsistent state. For more information, see Microsoft Knowledge Base article 827493 at support.microsoft.com.
注意事项:
- 以这种方式添加到队列的消息可以在重新启动之前从队列中成功检索。
- 让队列再次运行的唯一方法是遵循以下说明:MSMQ Inconsistent State After Restart,但这显然会阻止消息恢复。
- 如果我留下 Message.Recoverable = false 则服务将成功重新启动。但我希望我的消息在服务重启后仍然有效。
- 当我将队列设置为事务时,我得到完全相同的行为。
有什么想法吗?
【问题讨论】:
-
我也有同样的问题 :( 我的消息是使用 WCF 创建的,但也可以恢复。
标签: .net msmq windows-server-2008-r2