10.2.3. AMQP メッセージのブロック
本章で前述したように、Core Protocol はプロデューサーのウィンドウサイズのフロー制御システムを使用します。このシステムでは、クレジットはバイトを表し、プロデューサーに割り当てられます。プロデューサーがメッセージを送信する場合は、送信する前にメッセージのサイズに対応するのに十分なクレジットがあるまで待機する必要があります。
しかし、AMQP フロー制御のクレジットはバイトを表すのではなく、メッセージサイズに関係なく、プロデューサーが送信できるメッセージの数を表します。そのため、AMQP クライアントがアドレスの max-size-bytes
を大幅に超過するシナリオが考えられます。
この状況を管理するには、要素 max-size-bytes-reject-threshold
を address-setting
に追加し、アドレスサイズの上限をバイト単位で指定します。この上限に達すると、ブローカーは AMQP メッセージを拒否します。デフォルトでは、max-size-bytes-reject-threshold
は -1
に設定されているか、制限なしに設定されます。
AMQP メッセージをブロックするブローカーの設定
AMQP メッセージが設定された最大バイト数よりも大きい場合にブローカーを設定するには、BROKER_INSTANCE_DIR/etc/broker.xml
に新しい addres-setting
設定要素を追加します。
手順
以下の設定例は、最大サイズ
300000
バイトをmy.amqp.blocking.queue
アドレスにルーティングされる AMQP メッセージに適用します。<configuration> <core> ... <address-settings> ... <address-setting match="my.amqp.blocking.queue"> 1 <max-size-bytes-reject-threshold>300000</max-size-bytes-reject-threshold> 2 </address-setting> </address-settings> </core> </configuration>
関連資料
- AMQP プロデューサーにクレジットを設定する方法は、3章ネットワーク接続: プロトコル を参照してください。