2012-02-24 10 views

答えて

7

paxdiabloはMSMQは永続的なキューイングソリューションですが、デフォルトではありません。デフォルトでは、メッセージをRAMに格納し、メッセージがディスクに保存されるようにMSMQを設定し、サーバーのクラッシュ時にメッセージを失わないようにします。

さらに詳しい情報はMessage.Recoverableをご覧ください。

0

はい、MSMQはの永続キューイングソリューションです。これは、電源が失われても影響を受けないバッキングストレージにメッセージを安全に保管します(もちろん、大規模な電源投入からディスクが吹き飛ばされない限り)。

潜在的に信頼性の低い環境で確実にメッセージをキューに入れることが重要です。そのために、特定のサーバーがダウンしたときにメッセージを失うことはかなりの欠点となります。 (売上高ピッチのような言語のと謝罪)

Microsoft's own pagesから

メッセージキューアプリケーションは、異種ネットワーク間とオフラインの可能性があるコンピュータと通信するためのインフラストラクチャをメッセージキューを使用することができます。メッセージキューはメッセージ配信、効率的なルーティング、セキュリティ、トランザクションサポート、および優先度ベースのメッセージングを保証します。

+6

私は '*保証されたメッセージ配信*'は、キューの**トランザクション**機能ではなく、参照していると思います。もちろん、フェイルセーフな方法でそれらを持続させることは、それの必要な部分です。 :-)しかし、それはデフォルトではありません。 –

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は、メモリ内のいくつかのメッセージを保存します210性能を有し、メッセージはに書き込まれたことなしにキュー から送受信されることができる。

Aditionally、あなたはキュートランザクションは、メッセージの正しい出荷と受信を保証するために行う必要があります。

+1

この記事は100%正確ではありませんのでご注意ください。 "Express MSMQメッセージがディスクに書き込まれるのはなぜですか?" http://blogs.msdn.com/b/johnbreakwell/archive/2008/04/04/why-are-my-express-messages-being-written-to-disk.aspx –

+1

ありがとうございます@John追加情報基礎が揺れ動いた。 :-) –

関連する問題