2011-10-04 30 views
8

リモートのトランザクションメッセージキューへのメッセージ送信がどのように機能するかを確認したかっただけです。MSMQトランザクションメッセージ配信はどのように機能しますか?

私は2台のマシンを持っていると仮定し、AとB

マシンAは、メッセージを受信するために使用されるトランザクションキューを持っています。 Windowsサービスはこのキューを監視し、データで何かを行います(SQL Serverにそれを保持します)。それを取得する前に、メッセージを送信するとき

は、マシンB上で作成したローカルコピーである
  1. : マシンBがマシンA上のキューへの書き込みを

    いくつかの質問を必要とするアプリケーションを実行していますマシンAに配信されますか? a。その場合は、この動作は既定で行われますか、「IsRecoverable」プロパティが送信された場合にのみ発生しますか?
    b。キューがトランザクションであるという事実は、この動作に何らかの影響を与えますか?

  2. 私はトランザクションキューを使用しているので、トランザクションがコミットするとデータはどこにありますか? a。ローカルに座っていますか?msmqサービスがメッセージをリモートキューに配信するのを待っていますか?
    b。または、メッセージがリモートマシンのキューに入っていますか?

ドキュメントの解釈に問題があります。いくつかの場所では、ストアとフォワードの動作が記述されていることがわかりますが、トランザクションキューのデフォルトの動作であるかどうかを理解していないか、

答えて

6

トランザクションMSMQについて理解することは、リモートキューへのメッセージのトランザクション送信に実際には3つの異なるトランザクションが存在することです。

  1. 送信者は、メッセージをローカルの一時キューに書き込みます。
  2. 送信側マシン上のキュー・マネージャーは、電送を介して受信側マシン上のキュー・マネージャーにメッセージを送信します。
  3. 受信者サービスはキューメッセージを処理し、キューからメッセージを削除します。ご質問への答えでそう

メッセージを送信する場合 は、それがマシンAに配信される前に、マシンB上で作成したローカルコピーですか?もしそうなら

はい

は、デフォルトでこの動作で、または 「IsRecoverable」プロパティが送信された場合にのみ発生しますか。

デフォルトでは。これはstore and forwardとして知られています。

キューがトランザクションであるという事実は、この の動作に影響しますか?

エラーが発生した場合を除いては何もありません。

トランザクションキューを使用しているので、 トランザクションがコミットすると、データはどこにありますか?

それがリモート・キューに メッセージを配信するためにMSMQサービスを待って、ローカルに座っている

(上記参照)あなたは意味どのトランザクション依存?

リモートキューが利用できない場合のみ。

または、メッセージがリモートマシンのキューに入っていますか?

受信者サービスがメッセージを正常に処理できない場合(ハンドラに例外があります)、メッセージはリモートキューに残ります。

+0

ありがとうヒュー、これは非常に便利です! – Kartik

関連する問題