2016-08-03 3 views
2

私は1つのアプリケーションサーバーしか持たない環境があります。私はしばらくの時間(10秒程度のような)サービスを受けるいくつかのメッセージを持っています。これらのメッセージを処理するコードを実行しているコンシューマアプリケーションの複数のインスタンスを設定することによってスループットを向上させたいと思います。私は「競合する消費者」のパターンについて読んだことがあり、MassTransitを使用するときはこれを避けるべきだということを知りました。 MassTransitのドキュメントhereによると、各受信エンドポイントには一意のキュー名が必要です。私はこの勧告を私の環境にどのようにマッピングするかを理解するのに苦労しています。 実行中のコンシューマのインスタンスがそれぞれ同じメッセージを受け取るようにすることはできますが、インスタンスの1つのみが実際に動作します。つまり、「競合するコンシューマ」パターンを実装することはできますが、1つではなく複数のキューに実装できますか?MassTransit複数のコンシューマー

これは間違っていますか?私は本当に "出版"とは対照的に "送信"方法を調べる必要がありますか? 「送信」の欠点は、送信者がエンドポイントの存在を直接知る必要があることと、私が持っている消費者/エンドポイントの数で動的になりたいということです。特定のメッセージタイプにサービスできるコンシューマインスタンス/キュー/エンドポイントの数を追跡するのに役立つMassTransitには何かが組み込まれていますか?

おかげで、 アンディ

答えて

4

ので、「競合する消費者を避ける」のガイダンスは、MSMQがプライマリ輸送したときからでした。 MSMQは、複数のスレッドがキューからの読み取りを行う場合には失敗します。

RabbitMQを使用している場合、競合するコンシューマはすばらしく動作します。競合する消費者が正しい答えです。競合する各消費者は、エンドポイントからの同じ受信を使用します。

関連する問題