4.9. AMQP メッセージに対する大きなメッセージ処理の設定
クライアントは、ブローカーの内部バッファーのサイズを超える大きな AMQP メッセージを送信する可能性があり、予期せぬエラーが発生する可能性があります。この状態を回避するには、メッセージが指定の最小値よりも大きい場合にメッセージをファイルとして保存するようにブローカーを設定できます。このように大きなメッセージを処理すると、ブローカーはメモリー内にメッセージを保持しません。代わりに、ブローカーはメッセージを大きなメッセージファイルを保存するために使用される専用ディレクトリーに保存します。
OpenShift Container Platform でのブローカーデプロイメントでは、大きなメッセージディレクトリーは、メッセージストレージ用にブローカーが使用する永続ボリューム (PV) の /opt/<custom_resource_name>/data/large-messages
です。ブローカーがメッセージを大きなメッセージとして保存すると、キューは大きなメッセージディレクトリーのファイルへの参照を保持します。
AMQ Broker 7.10 の Operator ベースのブローカーデプロイメントでは、AMQP プロトコルでのみ大きなメッセージ処理を利用することができます。
4.9.1. 大規模なメッセージ処理のための AMQP アクセプターの設定
以下の手順は、指定したサイズよりも大きい AMQP メッセージを処理するようにアクセプターを設定する方法を説明します。
前提条件
- Operator ベースのブローカーデプロイメントのアクセプターの設定方法を理解する必要があります。「アクセプターの設定」 を参照してください。
大規模な AMQP メッセージを専用の大きなメッセージディレクトリーに保存するには、ブローカーデプロイメントは永続ストレージ (つまり、
persistenceEnabled
はデプロイメントの作成に使用するカスタムリソース (CR) インスタンスでtrue
に設定する必要があります)。永続ストレージの設定についての詳細は、以下のドキュメントを参照してください。
手順
AMQP アクセプターを定義したカスタムリソース (CR) インスタンスを開きます。
OpenShift コマンドラインインターフェイスの使用:
$ oc edit -f <path/to/custom_resource_instance>.yaml
OpenShift Container Platform Web コンソールの使用
-
左側のナビゲーションメニューで、
をクリックします。 -
ActiveMQArtemis
CRD をクリックします。 -
Instances
タブをクリックします。 - プロジェクトの namespace に対応する CR インスタンスを見つけます。
-
左側のナビゲーションメニューで、
以前に設定された AMQP アクセプターは、以下のようになります。
spec: ... acceptors: - name: my-acceptor protocols: amqp port: 5672 connectionsAllowed: 5 expose: true sslEnabled: true ...
ブローカーが大きいメッセージとして処理する AMQP メッセージの最小サイズをバイト単位で指定します。以下に例を示します。
spec: ... acceptors: - name: my-acceptor protocols: amqp port: 5672 connectionsAllowed: 5 expose: true sslEnabled: true amqpMinLargeMessageSize: 204800 ... ...
上記の例では、ブローカーはポート 5672 で AMQP メッセージを受け入れるように設定されます。
amqpMinLargeMessageSize
の値に基づいて、アクセプターが 204800 バイトよりも大きい AMQP メッセージ (200 キロバイト以上) を受信する場合、ブローカーはメッセージを大きなメッセージとして格納します。ブローカーはメッセージを、メッセージストレージ用にブローカーが使用する永続ボリューム (PV) の永続ボリューム (デフォルトでは
/opt/<custom_resource_name>/data/large-messages
) にメッセージを保存します。amqpMinLargeMessageSize
プロパティーの値を明示的に指定しないと、ブローカーは 102400 (つまり 100 キロバイト) のデフォルト値を使用します。amqpMinLargeMessageSize
を-1
に設定すると、AMQP メッセージに対する大きなメッセージ処理が無効になります。