Windows重启时,MSMQueue可以保留其值吗?

Nap*_*Nap 4 msmq

我有一个现有的系统,我想知道如果MSMQueue重新启动,它是否可以保留队列的值.它重新启动时清除该值.

小智 8

正如paxdiablo所写,MSMQ是一种持久的排队解决方案,但默认情况下不是!默认设置是将消息存储在RAM中,并让MSMQ将消息持久保存到磁盘,以便在服务器崩溃时不会丢失,您必须在EACH消息上指定消息.

如果您查看属性Message.Recoverable,可以找到有关此内容的更多信息.


Jen*_*s H 8

作为@谢尔-AKE Gafvelin已经说了,你可以配置每封邮件,但恕我直言,在更方便的方法是将其设置在队列本身:可靠消息与MSMQ和.NET

MessageQueue msgQ = new MessageQueue(@".\private$\Orders");
msgQ.DefaultPropertiesToSend.Recoverable = true;
msgQ.Send("This message will be marked as Recoverable");
msgQ.Close();
Run Code Online (Sandbox Code Playgroud)

从上面的文章(由我突出):

通过默认,MSMQ存储在存储器中用于提高性能的一些消息,并且一个消息可以发送并且从队列中接收 而不必被写入磁盘.

另外,您应该使队列成为事务性的,以保证正确的发货和接收消息.