服务/服务器重新启动后,MSMQ队列消息能否幸存?我的意思是,如果一个队列有消息,并且服务器遇到硬重启,重新启动后消息是否仍然可用在队列中?
解决方法
要实现这一点,您必须将消息标记为可恢复.默认情况下,MSMQ消息仅保存在内存中,但可恢复消息被备份到磁盘以启用可靠的MSMQ消息传递.
using System.Messaging; Message recoverableMessage = new Message(); recoverableMessage.Body = "Sample Recoverable Message"; recoverableMessage.Recoverable = true; MessageQueue msgQ = new MessageQueue(@".\$private\Orders"); msgQ.Send(recoverableMessage);
这个区域在Reliable Messaging with MSMQ and .NET有一个概述.
事务消息不需要手动标记为可恢复 – 这是事实上它们是基于MSMQ的事务的一部分.