我有一个在Win2008 R2上运行的私有非事务性消息队列。使用队列上的可恢复消息重新启动MSMQ服务时不会恢复
放在一个队列可恢复消息像这样:
Message msg = new Message { Body = "hello", Formatter = new XmlMessageFormatter(), Label = "Notification", Recoverable = true, AppSpecific = 123 }; mq.Send(msg);
不要检索消息时,我做了以下的队列突破!
- 重新启动Message Queue服务
服务未成功重新启动。以下消息记录在事件查看器:
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,那么服务将成功重新启动。但我希望我的消息能够在服务重新启动后继续存在
- 当我将队列设置为Transactional时,我会得到完全相同的行为。
任何想法?
我有完全相同的问题:(我的消息是使用WCF创建的,但也是可恢复的 – tommed