第 3 章 网络连接:协议
AMQ Broker 具有可插拔协议架构,因此可轻松为网络连接启用一个或多个协议。
代理支持以下协议:
除上述协议外,代理还支持自己的原生协议,称为"Core Protocol"。过去版本的这个协议被称为"HornetQ",红帽 JBoss 企业应用平台使用。
3.1. 配置网络连接以使用协议
您必须将协议与网络连接关联,才能使用它。(请参阅 网络连接:接收器和连接器 以了解有关如何创建和配置网络连接的更多信息。 位于文件 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>
在给定网络 connnection 上启用 协议
的唯一要求是将 protocol 参数添加到接收器的 URI 中。参数的值必须是以逗号分开的协议名称列表。如果 URI 中没有 protocol 参数,则会启用所有协议。
例如,要使用 AMQP 协议在端口 3232 上创建接受者接收消息,请按照以下步骤操作:
-
打开配置文件
BROKER_INSTANCE_DIR/etc/broker.xml
-
在
<acceptors>
小节中添加以下行:
<acceptor name="ampq">tcp://0.0.0.0:3232?protocols=AMQP</acceptor>
默认接受器中的其他参数
在最小接收器配置中,您指定一个协议作为连接 URI 的一部分。但是,broker.xml
配置文件中的默认接受器配置了一些额外的参数。下表详细介绍了为默认接收器配置的其他参数。
接受者. | 参数 | 描述 |
---|---|---|
all-protocols acceptor AMQP STOMP | tcpSendBufferSize |
TCP 发送缓冲区的大小(以字节为单位)。默认值为 |
tcpReceiveBufferSize |
TCP 接收缓冲区的大小(以字节为单位)。默认值为 TCP 缓冲区大小应该根据网络的带宽和延迟调整。 摘要中,TCP 发送/接收方缓冲区大小应根据以下计算: buffer_size = bandwidth * RTT.
其中,带宽每秒以字节为单位,网络往返时间(RTT)以秒为单位。使用 对于 fast 网络,您可能想要从默认值增大缓冲区大小。 | |
all-protocols acceptor AMQP STOMP HornetQ MQTT | useEpoll |
如果使用支持它的系统(Linux),则使用 Netty epoll。Netty 原生传输提供比 NIO 传输更好的性能。此选项的默认值是 |
all-protocols acceptor AMQP | amqpCredits |
AMQP 制作者可以发送的消息数上限,不论消息总大小如何。默认值为 要了解有关如何使用信用控制 AMQP 消息的流,请参阅 第 10.2.3 节 “阻塞 AMQP 消息”。 |
all-protocols acceptor AMQP | amqpLowCredits |
代理再分割制作者信贷的低阈值。默认值为 要了解有关如何使用信用控制 AMQP 消息的流,请参阅 第 10.2.3 节 “阻塞 AMQP 消息”。 |
HornetQ 兼容性接受器 | anycastPrefix |
当连接到使用任何广播和多播的地址时,客户端用来指定任何广播路由类型的前缀。 有关配置前缀以使客户端在连接到地址时指定路由类型的更多信息,请参阅 第 4.6 节 “在接受或配置中添加路由类型”。 |
multicastPrefix |
当连接到使用任何广播和多播的地址时,客户端用来指定 有关配置前缀以使客户端在连接到地址时指定路由类型的更多信息,请参阅 第 4.6 节 “在接受或配置中添加路由类型”。 |
其他资源
- 有关您可以为 Netty 网络连接配置的其他参数的详情,请参考 附录 A, acceptor 和 Connector 配置参数。