第3章 受信接続の許可

ネットワーク接続は、クライアントがブローカーインスタンスに接続する方法を定義します。AMQ 7 では、これらの接続は AMQ 6 とは機能的に異なり、異なる方法で設定されます。

3.1. 受信ネットワーク接続の変更

AMQ 6 および AMQ Broker 7 の両方で、クライアントがブローカーに接続する方法を定義できます。これらの接続ポイントは AMQ 6 では トランスポートコネクター と呼ばれていましたが、AMQ Broker 7 では アクセプター と呼ばれます。

AMQ 6 では、トランスポート層の複数の実装 (TCP、NIO など) が提供されました。したがって、クライアント接続ポイントがブロッキングトランスポートまたはノンブロッキングトランスポートを使用するかどうかに応じて、異なるトランスポートコネクターを使用する必要がありました。AMQ Broker 7 では、トランスポート層はデフォルトで非ブロッキングの Netty のみを使用します。AMQ Broker 7 には、2 種類のアクセプターがあります。

TCP

Netty TCP 接続は、同じサーバーか物理的にリモートかに関係なく、クライアントとブローカーが異なる仮想マシンにある場合に使用されます。

Netty はデフォルトで非ブロッキング (Java NIO) を使用します。したがって、ブローカーインスタンスへのすべてのクライアント接続は非ブロッキングです。また、WebSocket の組み込みサポートもあります。

In-VM
in-VM 接続は、クライアント (アプリケーションかサーバーかに関係なく) がブローカーと同じ仮想マシンにある場合に使用されます。

AMQ 6 では、メッセージングプロトコルごとに個別のトランスポートコネクターを使用する必要もありました。AMQ Broker 7 では、低レベルのトランスポート (TCP または in-VM のいずれか) は、クライアントによって使用されるメッセージングプロトコル (AMQP、MQTT 等) とは独立しています。つまり、1 つのアクセプターが同じポートで複数のプロトコルを使用できます。実際、使用できるプロトコルを明示的に制限しない限り、アクセプターはサポートされるすべてのメッセージプロトコルを受け入れます。

たとえば、AMQ Broker 7 のデフォルトのアクセプターは、すべてのメッセージプロトコルを自動的に受け入れます。

<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>