第3章 ネットワーク接続でのメッセージングプロトコルの設定
AMQ Broker にはプラグ可能なプロトコルアーキテクチャーがあるため、ネットワーク接続に 1 つ以上のプロトコルを簡単に有効化できます。
ブローカーは以下のプロトコルをサポートします。
上記のプロトコルのほかに、ブローカーは Core と呼ばれる独自のネイティブプロトコルもサポートします。このプロトコルの以前のバージョンは HornetQ と呼ばれ、Red Hat JBoss Enterprise Application Platform によって使用されていました。
3.1. メッセージングプロトコルを使用するためのネットワーク接続の設定
使用する前に、プロトコルをネットワーク接続に関連付ける必要があります。(ネットワーク接続の作成方法と設定方法について、詳しくは 2章ネットワーク接続でのアクセプターおよびコネクターの設定を参照してください。)<broker_instance_dir>/etc/broker.xml
ファイルにあるデフォルト設定には、すでに定義された接続が複数含まれています。便宜上、AMQ Broker にはサポートされる各プロトコルのアクセプターと、すべてのプロトコルをサポートするデフォルトのアクセプターが含まれます。
デフォルトのアクセプターの概要
以下は、broker.xml
設定ファイルにデフォルトで含まれるアクセプターです。
<configuration> <core> ... <acceptors> <!-- All-protocols acceptor --> <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor> <!-- AMQP Acceptor. Listens on default AMQP port for AMQP traffic --> <acceptor name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor> <!-- STOMP Acceptor --> <acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor> <!-- HornetQ Compatibility Acceptor. Enables HornetQ Core and STOMP for legacy HornetQ clients. --> <acceptor name="hornetq">tcp://0.0.0.0:5445?anycastPrefix=jms.queue.;multicastPrefix=jms.topic.;protocols=HORNETQ,STOMP;useEpoll=true</acceptor> <!-- MQTT Acceptor --> <acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor> </acceptors> ... </core> </configuration>
特定のネットワーク設定でプロトコルを有効にする唯一の要件は、protocols
パラメーターを アクセプターの URI に追加することです。パラメーターの値は、プロトコル名のコンマ区切りリストである必要があります。protocol パラメーターが URI から省略される場合、すべてのプロトコルが有効になります。
たとえば、AMQP プロトコルを使用して 3232 番ポートでメッセージを受信するためにアクセプターを作成するには、以下の手順に従います。
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 -
以下の行を
<acceptors>
スタンザに追加します。
<acceptor name="ampq">tcp://0.0.0.0:3232?protocols=AMQP</acceptor>
デフォルトのアクセプターの追加パラメーター
最小限のアクセプター設定では、接続 URI の一部としてプロトコルを指定します。ただし、broker.xml
設定ファイルのデフォルトのアクセプターには追加のパラメーターが設定されています。以下の表は、デフォルトのアクセプターに設定された追加パラメーターの詳細を示しています。
Acceptor(s) | パラメーター | 説明 |
---|---|---|
All-protocols acceptor AMQP STOMP | tcpSendBufferSize |
TCP 送信バッファーのサイズ (バイト単位)。デフォルト値は |
tcpReceiveBufferSize |
TCP 受信バッファーのサイズ (バイト単位)。デフォルト値は TCP バッファーサイズは、ネットワークの帯域幅およびレイテンシーに従って調整する必要があります。 つまり、TCP の送信/受信バッファーサイズは以下のように計算する必要があります。 buffer_size = bandwidth * RTT
帯域幅とは秒単位で、ネットワークラウンドトリップタイム (RTT) は秒単位になります。RTT は、 高速ネットワークでは、デフォルトからバッファーサイズを増やす必要がある場合があります。 | |
All-protocols acceptor AMQP STOMP HornetQ MQTT | useEpoll |
サポートするシステム (Linux) を使用する場合は Netty epoll を使用します。Netty ネイティブトランスポートは NIO トランスポートよりも優れたパフォーマンスを提供します。このオプションのデフォルト値は |
All-protocols acceptor AMQP | amqpCredits |
メッセージの合計サイズに関係なく、AMQP プロデューサーが送信できるメッセージの最大数。デフォルト値は AMQP メッセージのブロックにクレジットが使用される方法は、「AMQP プロデューサーのブロック」 を参照してください。 |
All-protocols acceptor AMQP | amqpLowCredits |
ブローカーによってプロデューサーのクレジットが返送される低いしきい値。デフォルト値は AMQP メッセージのブロックにクレジットが使用される方法は、「AMQP プロデューサーのブロック」 を参照してください。 |
HornetQ 互換性アクセプター | anycastPrefix |
anycast および アドレスへの接続時にクライアントがルーティングタイプを指定できるように接頭辞を設定する方法は、「アクセプター設定へのルーティングタイプの追加」 を参照してください。 |
multicastPrefix |
アドレスへの接続時にクライアントがルーティングタイプを指定できるように接頭辞を設定する方法は、「アクセプター設定へのルーティングタイプの追加」 を参照してください。 |
関連情報
- Netty ネットワーク接続に設定できるその他のパラメーターに関する情報は、付録A アクセプターおよびコネクター設定パラメーター を参照してください。