第 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 中有两种类型的接收器:

TCP

客户端和代理位于不同的虚拟机(无论是在同一服务器中还是物理远程)时,会使用 Netty TCP 连接。

Netty 默认使用非阻塞(Java NIO),这意味着所有与代理实例的客户端连接都没有阻塞。它还内置了对 WebSockets 的支持。

In-VM
当客户端(应用程序或服务器)驻留在与代理相同的虚拟机中时,将使用虚拟机内连接。

AMQ 6 还需要您为每个消息传递协议使用单独的传输连接器。在 AMQ Broker 7 中,低级传输(TCP 或 in-VM)与客户端使用的消息传递协议(如 AMQP、MQTT 等)不同。这意味着单个接收器可以使用同一端口上的多个协议。实际上,接收器将接受所有支持的消息协议,除非您明确限制其可以使用的协议。

例如,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>