6

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

ヘルプやポインタをいただければ幸いです。

4

1 に答える 1

3

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

そうは言っても、メッセージの負荷を分散する目的で同じキューから読み取る複数のプロセスがある場合は、選択的受信を使用して、そのプロセスに関連する各インスタンスのメッセージのみを消費できます。

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

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

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

于 2009-10-13T10:05:11.350 に答える