7.3. メッセージブロックの設定
以下の手順では、指定のアドレスが指定した最大サイズ制限に達した際に、メッセージブロックを設定する方法を説明します。
メッセージブロックは、Core、OpenWire、および AMQP プロトコルに対して のみ 設定できます。
7.3.1. Core および OpenWire プロデューサーのブロック
以下の手順は、指定のアドレスが指定した最大サイズ制限に達した際の、Core および OpenWire メッセージプロデューサーのメッセージブロックを設定する方法を示しています。
前提条件
- アドレスおよびアドレス設定の設定方法を理解している。詳細は、4章アドレスおよびキューの設定 を参照してください。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 一致するアドレスまたはアドレス セット 用に設定した
address-setting
要素の場合は、メッセージブロック動作を定義する設定要素を追加します。以下に例を示します。<address-settings> <address-setting match="my.blocking.address"> ... <max-size-bytes>300000</max-size-bytes> <address-full-policy>BLOCK</address-full-policy> ... </address-setting> </address-settings>
max-size-bytes
ブローカーが
address-full-policy
に指定されたポリシーを実行する前に、アドレスに許可されるメモリーの最大サイズ ( バイト単位 )。指定する値は、K、MB、GB などのバイト表記もサポートします。注記address-setting
要素でmax-size-bytes
を指定すると、一致する 各 アドレスに値が適用されます。この値を指定すると、一致するすべてのアドレスの 合計 サイズがmax-size-bytes
の値に制限されるわけでは ありません。address-full-policy
- アドレスの最大サイズに達したときにブローカーが取るアクション。
上記の例では、アドレス
my.blocking.address
に送信されたメッセージがメモリーの 300000 バイトを超えると、ブローカーは Core または OpenWire メッセージプロデューサーからの追加のメッセージをブロックします。
7.3.2. AMQP プロデューサーのブロック
Core や OpenWire などのプロトコルは、ウィンドウサイズのフロー制御システムを使用します。このシステムでは、クレジットはバイトを表し、プロデューサーに割り当てられます。プロデューサーがメッセージを送信する場合、プロデューサーはメッセージのサイズに対して十分なクレジットがあるまで待機する必要があります。
対照的に、AMQP フロー制御のクレジットはバイトを表します。代わりに、AMQP クレジットは、メッセージサイズに関係なく、プロデューサーが送信できるメッセージの数を表します。そのため、AMQP プロデューサーがアドレスの max-size-bytes
の値を大幅に超過することがあります。
そのため、AMQP プロデューサーをブロックするには、別の設定要素 max-size-bytes-reject-threshold
を使用する必要があります。一致するアドレスまたはアドレスセットの場合、この要素はメモリーのすべての AMQP メッセージの最大サイズをバイト単位で指定します。メモリーのすべてのメッセージの合計サイズが指定の制限に達すると、ブローカーは AMQP プロデューサーが追加のメッセージを送信しなくなります。
以下の手順では、AMQP メッセージプロデューサーのメッセージブロックを設定する方法を説明します。
前提条件
- アドレスおよびアドレス設定の設定方法を理解している。詳細は、4章アドレスおよびキューの設定 を参照してください。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 一致するアドレスまたはアドレス セット に設定した
address-setting
要素の場合は、メモリーのすべての AMQP メッセージの最大サイズを指定します。以下に例を示します。<address-settings> <address-setting match="my.amqp.blocking.address"> ... <max-size-bytes-reject-threshold>300000</max-size-bytes-reject-threshold> ... </address-setting> </address-settings>
max-size-bytes-reject-threshold
ブローカーが AMQP メッセージをさらにブロックする前に、アドレスに許可されるメモリーの最大サイズ ( バイト単位 )。指定する値は、K、MB、GB などのバイト表記もサポートします。デフォルトでは、
max-size-bytes-reject-threshold
は-1
に設定されます。これは、最大サイズがないことを意味します。注記address-setting
要素でmax-size-bytes-reject-threshold
を指定する場合、値は一致する 各 アドレスに適用されます。この値を指定すると、一致するすべてのアドレスの 合計 サイズがmax-size-bytes-reject-threshold
の値に制限されるわけでは ありません。
上記の例では、my.amqp.blocking.address
アドレスに送信されたメッセージがメモリーの 300000 バイトを超えると、ブローカーは AMQP プロデューサーからの追加のメッセージをブロックし始めます。