我々は、.NET RabbitMQのライブラリを使用して次のシナリオを持っている:マルチスレッド.NETのRabbitMQ出版社
ワーカースレッドがキューから「要求」メッセージをピックアップし、処理のために複数のワーカースレッドにディスパッチします。完了すると、各ワーカースレッドは別のメッセージを送信します。
私の質問は、最高のスループットと安定性を得るために、送信者にはどのようなパターンが推奨されますか。例:単一の接続とIModelを持つすべてのワーカースレッドによってアクセスされる
1)シングルトン「パブリッシャ」インスタンス(「ロック」IModelをへのアクセスを同期するために)
2)シングルトン 'を使用して1つのConnectionですべてのワーカースレッドからアクセスされ、各送信要求に対して新しいIModelを作成する「発行者」インスタンスです。
などですか?
いくつかの試行錯誤のために良い問題のように聞こえます。 –
各ワーカースレッドは、中央プロセスdistを持つ代わりにメッセージキューからメッセージを取得する方が良いでしょう作業をスレッドにリブートします。メイン・プロセスが作業項目を置くことができ、ワーカー・スレッドがそれらを受け取る共有メモリー・キュー(RabbitMQ libにスレッドセーフ実装があります)を使用して、あなたが提案していることを達成することができます。 –
Thx both.Chris:それは、他の人々の実際の経験を本当に望んでいた。 –