2009-09-08 17 views
5

複数のコンシューマに1つのMSMQインスタンスをリッスンさせ、Selective Consumerインターフェイスを使用してそれぞれのメッセージの個別のサブセットを処理できますか?このシナリオをpub/subを使って正しく動作させることはできません。キュー上の単一のコンシューマはうまく動作しますが、> 1コンシューマ(同じ実行可能ファイルの複数のインスタンス)を使用すると、メッセージはどこにも表示されません。私が理解しているように、これは「競合する消費者」の場合ではありません。単一の消費者だけが単一のメッセージを処理するからです。複数のコンシューマをMassTransitで1つのキューに使用する

何か助けや指針をいただければ幸いです。

答えて

2

MSMQキューからメッセージをディスパッチするためにMassTransitを使用している場合は、キューがボックスのローカルにあることをお勧めします。

メッセージロードを分散するために同じキューから複数のプロセスを読み込んでいる場合は、選択受信を使用して、そのプロセスに関連する各インスタンスのメッセージのみを消費することができます。

たとえば、メッセージをサービスに送信し、そのサービスが相関メッセージで応答するアプリケーションのインスタンスが複数ある場合、関連するメッセージを識別子でサブスクライブすることができ、サブスクライブされたメッセージのみが配信されます。選択されていないメッセージは、関心のあるプロセスによって処理されるまでキューに残ります。

このパターンのため、無視された応答が時間の経過とともにキューを詰まらせないように、メッセージに有効期限を設定することを強くお勧めします。

このシナリオは、メッセージングを介して要求/応答パターンを複製する場合によく使用されます。

関連する問題