Apache.NMS.AMQP (v1.8.0) を使用して AWS 管理の ActiveMQ (v5.15.9) ブローカーに接続していますが、接続/消費者/宛先のプリフェッチ サイズの設定に問題があります (いずれにもカスタム値を設定できませんでした) )。
ソース コードを調べているうちに、デフォルトのプリフェッチ値 (DEFAULT_CREDITS) が 200 に設定されていることがわかりました。
この動作をテストするために、220 個のメッセージを 1 つのキューに入れ、2 つのコンシューマーを作成してからメッセージを消費するテストを作成しました。結果は、予想どおり、最初のコンシューマが 200 メッセージをデキューし、2 番目のコンシューマが 20 メッセージをデキューしました。
その後、クラスLinkCredit
のプロパティが読み取り専用であるため、成功せずに消費者にプリフェッチサイズを設定する方法を探していました。ConsumerInfo
私のユースケースでは、このドキュメントページに従って次に試した接続のプリフェッチサイズを1つ設定する必要があるため、成功しませんでした。これは私が試した URL です。
amqps://*my-broker-url*.amazonaws.com:5671?transport.prefetch=50
amqps://*my-broker-url*.amazonaws.com:5671?jms.prefetchPolicy.all=50
amqps://*my-broker-url*.amazonaws.com:5671?jms.prefetchPolicy.queuePrefetch=50
上記のすべてを試した後、
?consumer.prefetchSize=50
キュー名に追加して、キューの宛先のプリフェッチを設定しようとしました。次のような結果になります。
queue://TestQueue?consumer.prefetchSize=50
上記のすべての試行の結果、有効なプリフェッチ サイズは 200 でした (上記のテストで決定)。
AMQP を使用してブローカーに接続するときに、接続ごとにカスタムのプリフェッチ サイズを設定する方法はありますか? このドキュメント ページに記載されているクエリ パラメータを使用する以外に、ブローカーを構成する方法はありますか?