第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 のサポートも組み込まれています。

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

また、AMQ 6 では、メッセージングプロトコルごとに個別のトランスポートコネクターを使用する必要がありました。AMQ Broker 7 では、低レベルのトランスポート (TCP または仮想マシン内) は、クライアントが使用するメッセージングプロトコル (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>