高いメッセージトラフィックで最適なパフォーマンスを得るためにC++ Apache QPIDクライアントをスレッドアウトする最適な方法を探しています。QPID C++クライアントマルチスレッド最適化
私たちのブローカーには3つの交換があり、それぞれに2つのユニ指向キューがあります。 C++クライアントがプッシュする3つの「アップリンク」キューには、かなりのトラフィックが発生します。
QPIDブローカーとのインターフェイスには、疎に文書化されたクラスがいくつかあります。接続、セッション、送信者、受信者。接続はセッションを提供し、セッションは送信者または受信者を提供します。これらのオブジェクトのどれがスレッドセーフであるか(スレッドセーフではない)、またはクライアントライブラリにスレッドが作成されるというQPIDのさまざまなドキュメントを読んだ後、私には不明です。 QPID FAQによると、ブローカでのスレッドはセッションレベルで発生します。クライアントで発生する箇所については言及していません。
アップリンクキューの1つにデータをプッシュする必要があるクライアントアプリケーション内に複数のスレッドコンテキストが存在します。複数のコンテキストにサービスを提供するセッション、接続、または送信者のプールを持つのが最善でしょうか? QPIDはこのシナリオのために最適化を組み込んでいますか?つまり、1人の共有送信者で十分でしょうか?
目標は、どこかにシングルスレッドのボトルネックを持っていないことですが、効率的にトラフィック負荷の存在ごとに並列にで拡張できるようにします。ブローカで
こんにちは、ドキュメントやその他の場所にスレッドセーフに関する情報がありますか?ありがとう。 – ipavlu