2012-02-24 54 views

回答

7

由于paxdiablo写道MSMQ是一个持久的排队解决方案,但不是默认情况下!默认情况是将消息存储在RAM中,并让MSMQ将消息保存到磁盘,以便在发生服务器崩溃时不会丢失,而必须在每条消息中指定它。

如果您查看酒店Message.Recoverable,可以找到关于此的更多信息。

0

是的,MSMQ是持久排队解决方案。它将信息安全地存储在后备存储上,不会受到电力损失的影响(除非你遇到类似于当然真正巨大的电力浪涌的磁盘)。

重点是在可能不可靠的环境中提供可靠的消息排队。为此,当特定服务器停机时丢失消息将是一个相当大的缺点。

Microsoft's own pages(和道歉的销售间距般的语言):

消息队列应用程序可以使用消息队列基础设施跨异构网络,并与电脑可脱机进行通信。消息队列提供保证消息传递,有效的路由,安全性,事务支持和基于优先级的消息传递。

+6

我认为'*有保证的消息传递*'是引用而不是队列的**事务性**功能。当然,坚持以失败保险的方式将是它的必要组成部分。 :-)。但是,这不是默认情况。 – 2012-02-24 10:37:30

8

正如@谢尔-AKE Gafvelin已经说了,你可以配置每个消息,但恕我直言,更方便的方法是将其设置队列本身:Reliable Messaging with MSMQ and .NET

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

从文章上述(由我亮点):

通过默认,MSMQ保存在内存中的一些消息增加 性能,并且可以从队列 发送和接收消息,而没有被写入磁盘

的方法,另外,你应该使队列事务,以保证正确的运输和接收消息。

+1

请注意,文章不是100%准确。 “为什么我的Express MSMQ消息正在写入磁盘?” http://blogs.msdn.com/b/johnbreakwell/archive/2008/04/04/why-are-my-express-messages-being-written-to-disk.aspx – 2012-02-24 13:26:42

+1

谢谢@John的补充信息。基本面动摇。 :-) – 2012-02-24 14:15:01

相关问题