Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
18.8.14. フロー制御
フロー制御は、クライアントまたはサーバーがデータでオーバーロードしないように、クライアントとサーバー間のデータフローを制限するために使用されます。
- Consumer Flow Control: クライアントがメッセージを消費する際にサーバーとクライアント間のデータのフローを制御します。パフォーマンス上の理由から、クライアントは通常、
receive()
メソッドを介してコンシューマーに配信したり、メッセージリスナーを介して非同期的にコンシューマーに配信する前にメッセージをバッファーします。レート制限のあるフロー制御: コンシューマーがメッセージを消費できるレートを制御できます。これはスロットリングの形式であり、コンシューマーが指定のレートよりも速いメッセージを消費しないようにすることができます。この機能を有効にするには、レートは正の整数である必要があります。1 秒あたりのメッセージ単位で指定される必要なメッセージ消費率の最大値です。これを-1
に設定すると、レート制限フロー制御が無効になります。デフォルト値は-1
です。例18.8 JMS を使用したレート制限フロー制御
JNDI を使用して接続ファクトリーを検索する場合は、standalone.xml
またはdomain.xml
で最大レートを設定できます。<connection-factory name="ConnectionFactory"> <connectors> <connector-ref connector-name="netty-connector"/> </connectors> <entries> <entry name="ConnectionFactory"/> </entries> <!-- We limit consumers created on this connection factory to consume messages at a maximum rate of 10 messages per sec --> <consumer-max-rate>10</consumer-max-rate> </connection-factory>
接続ファクトリーが直接インスタンス化されている場合、HornetQConnectionFactory.setConsumerMaxRate(int consumerMaxRate)
メソッドを使用して最大レートサイズを設定できます。 - プロデューサーフロー制御: サーバーが大きすぎないように、クライアントからサーバーに送信されるデータ量をサーバーに制限します。ウィンドウベースのフロー制御: HornetQ プロデューサーは、ジャーナルに十分なクレジットがある限り、メッセージをアドレスに送信できます。メッセージの送信に必要なクレジットの量は、メッセージのサイズで指定されます。プロデューサーはクレジットが少ないため、サーバーがより多くのクレジットを送信すると、より多くのメッセージを送信できます。プロデューサーリクエストのクレジットの量は、ウィンドウサイズ と呼ばれます。
例18.9 JMS を使用したプロデューサーウィンドウサイズフロー制御
JNDI を使用して接続ファクトリーを検索する場合は、プロデューサーウィンドウサイズをstandalone.xml
またはdomain.xml
で設定できます。<connection-factory name="ConnectionFactory"> <connectors> <connector-ref connector-name="netty-connector"/> </connectors> <entries> <entry name="ConnectionFactory"/> </entries> <producer-window-size>10</producer-window-size> </connection-factory>
接続ファクトリーが直接インスタンス化されている場合、HornetQConnectionFactory.setProducerWindowSize(int producerWindowSize)
メソッドを使用してプロデューサーウィンドウサイズを設定できます。