2011-08-12 10 views
2

アプリケーションでメッセージ処理サービスとしてMSMQを使用することを検討しています。私たちが望むのは、ノード間で負荷を分散するNLB(Network Load Balancer)の背後にあるサーバーファーム内のMSMQです。私は次の質問をしていますが、私はオンラインでポインタを見つけることができませんでした。サーバーファーム内のMSMQ

1)すべてのノードにMSMQをインストールする必要がありますか?
2)そうであれば、送信者アプリケーションがMSMQにメッセージを送信するときに、すべてのノードに送信する必要がありますか?
3)私の2番目の質問に対する答えが「はい」の場合、クライアントアプリケーションがメッセージを受信したときに、クライアントが受信したメッセージについて他のノードに通知してから削除する必要がありますか?

助けてください/ポインタをありがとう。

答えて

4

ここに役立つかもしれないいくつかのブログの記事は以下のとおりです。

Q1)私は、MSMQがすべてのノードにインストールされている必要がありますか?
A1)メッセージが配信されるすべてのサーバーにMSMQがインストールされている必要があります。

Q2)そうであれば、送信者アプリケーションはMSMQにメッセージを送信してすべてのノードに送信する必要がありますか?
A2)これは、XメッセージをXノードに送信し、1ノードからのみ読み取って他のコピーを破棄するロードバランスの1つの方法です。
もう1つの方法は、ランダムに選択された1つのノードに1つのメッセージを送信するネットワークロードバランサに送信することです。ただし、MSMQは非常に固着しています。

Q3)2番目の質問に対する回答が「はい」の場合、クライアントアプリケーションがメッセージを受信すると、クライアントが受信したメッセージについて他のノードに通知してから削除する必要がありますか?
A3)これは、あなたが提案しているロードバランシングの一種です。アプリケーションがメッセージを削除するか、TimeToBeReceivedタイマーが期限切れになるまで、MSMQはメッセージを削除しません。メッセージ処理の重複を避ける必要がある場合は、基本的に、クライアントアプリケーションを調整する必要があります。

乾杯
ジョンBreakwell

+0

おかげでジョン、応答とポインタのために。 – muruge

+1

A2に関して、「MSMQは非常に粘着性があります」、ここで良い議論があります:http://blogs.msdn.com/b/johnbreakwell/archive/2009/03/19/load-balancing-msmq-a-brief-discussion aspx "デフォルトで... 2または5分待つ...ネットワーク接続が切断される前に非アクティブになっています.... MSMQに接続を直ちにドロップさせることは可能です。これはお勧めできませんが、しかし、次のメッセージは新しいネットワーク接続が作成されるのを待たなければならない " –

+0

ありがとう、ネルソン:-) –