第 2 章 在网络连接中配置接受器和连接器
AMQ Broker 中使用两种连接类型:网络连接和 VM 连接。两台方位于不同的虚拟机时,无论位于同一服务器还是物理远程,都使用网络连接。客户端(无论是应用程序还是服务器)位于与代理相同的虚拟机上时,会使用 in-VM 连接。
网络连接使用 Netty。Netty 是一个高性能、低级网络库,它允许以几种不同的方式配置网络连接:使用 Java IO 或 NIO、TCP 套接字、SSL/TLS 或通过 HTTP 或 HTTPS 进行隧道。Netty 还允许单个端口用于所有消息传递协议。代理会自动检测正在使用的协议,并将传入的消息定向到适当的处理程序,以便进一步处理。
网络连接的 URI 确定其类型。例如,在 URI 中指定 vm 会创建一个 in-VM 连接:
<acceptor name="in-vm-example">vm://0</acceptor>
或者,在 URI 中指定 tcp 会创建一个网络连接。例如:
<acceptor name="network-example">tcp://localhost:61617</acceptor>
以下章节描述了网络连接和内连接所需的两个重要配置元素: acceptors 和 connectors。这些部分演示了如何为 TCP、HTTP 和 SSL/TLS 网络连接配置接受器和连接器,以及 in-VM 连接。
2.1. 关于接受者 复制链接链接已复制到粘贴板!
acceptors 定义如何向代理进行连接。每个接受者定义客户端可用于建立连接的端口和协议。下面显示了一个简单的接受器配置。
<acceptors>
<acceptor name="example-acceptor">tcp://localhost:61617</acceptor>
</acceptors>
代理配置中定义的每个 acceptor 元素都包含在单个 acceptors 元素中。您可以为代理定义的 acceptors 数没有上限。默认情况下,AMQ Broker 包括每个支持的消息传递协议的接收器,如下所示:
<configuration ...>
<core ...>
...
<acceptors>
...
<!-- Acceptor for every supported protocol -->
<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>