8.5. メッセージ消費率の設定
コンシューマーがメッセージを消費できる比率を規制できます。これはスロットリング とも呼ばれ、コンシューマーが設定の許容範囲を超えてメッセージを消費しないように、消費率を制限します。
レート制限のあるフロー制御は、ウィンドウベースのフロー制御と併せて使用できます。レート制限のあるフロー制御は、クライアントが 1 秒ごとに消費できるメッセージ数のみに影響し、バッファー内のメッセージ数には影響しません。レート制限が遅く、ウィンドウベースの制限が高いと、クライアントの内部バッファーがメッセージですぐにいっぱいになってしまいます。
この機能を有効にするには、レートには正の整数を指定する必要ががあります。これは 1 秒あたりのメッセージ数を単位として指定された希望する最大のメッセージ消費率になります。レートを -1 に設定すると、レート制限のあるフロー制御が無効になります。デフォルト値は -1 です。
以下の例は、メッセージの消費レートを毎秒 10 個のメッセージに制限するクライアントを示しています。
手順
クライアントが JNDI を使用して接続ファクトリーをインスタンス化する場合は、接続文字列 URL の一部として
consumerMaxRateパラメーターを含めます。JNDI コンテキスト環境内に URL を格納します。以下の例では、jndi.propertiesファイルを使用して URL を格納します。java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory java.naming.provider.url=tcp://localhost:61616?consumerMaxRate=10クライアントが JNDI を使用して接続ファクトリーをインスタンス化しない場合は、値を
ActiveMQConnectionFactory.setConsumerMaxRate()に渡します。ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory(...) cf.setConsumerMaxRate(10);
その他のリソース
コンシューマーレートの制限方法の例は、<install-dir>/examples/standard の consumer-rate-limit の例を参照してください。