第 3 章 在网络连接中配置消息传递协议


AMQ Broker 有一个可插拔协议架构,以便您可以轻松为网络连接启用一个或多个协议。

代理支持以下协议:

注意

除了上述协议外,代理还支持自己的原生协议,称为"Core"。此协议的过去版本被称为 "HornetQ",并由 Red Hat JBoss Enterprise Application Platform 使用。

3.1. 配置网络连接以使用消息传递协议

在使用协议前,您必须将协议与网络连接关联。(请参阅 第 2 章 在网络连接中配置接收器和连接器 来了解如何创建和配置网络连接。)默认配置位于文件 < broker_instance_dir>/etc/broker.xml 中,包括已经定义的多个连接。为方便起见,AMQ Broker 包括了每个支持的协议的接收器,以及支持所有协议的默认接收器。

默认接收器概述

以下是 broker.xml 配置文件中默认包括的 acceptors。

<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>
Copy to Clipboard Toggle word wrap

在给定网络连接器中启用协议的唯一要求是,将 protocol 参数添加到接受者的 URI 中。参数的值必须是用逗号分开的协议名称列表。如果 URI 中省略了 protocol 参数,则会启用所有协议。

例如,要创建一个接受者来使用 AMQP 协议在端口 3232 上接收信息,请按照以下步骤操作:

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. 在 < acceptors& gt; 小节中添加以下行:
<acceptor name="ampq">tcp://0.0.0.0:3232?protocols=AMQP</acceptor>
Copy to Clipboard Toggle word wrap

默认接收器中的其他参数

在最小的 acceptor 配置中,您可以将协议指定为连接 URI 的一部分。但是,broker.xml 配置文件中的默认 acceptors 配置了一些额外的参数。下表详细介绍了为默认接收器配置的附加参数。

Expand
表 3.1. 接受器中的其他参数
acceptor (s)参数描述

all-protocols acceptor

AMQP

STOMP

tcpSendBufferSize

TCP 发送缓冲区的大小(以字节为单位)。默认值为 32768

tcpReceiveBufferSize

以字节为单位 TCP 接收缓冲区的大小。默认值为 32768

TCP 缓冲区大小应根据您的网络带宽和延迟进行调优。

在摘要 TCP 发送/接收缓冲区大小中,应计算为:

buffer_size = bandwidth * RTT.

其中带宽(以字节/秒为单位),网络往返用时(RTT)以秒为单位。可以使用 ping 程序轻松测量 RTT。

对于快速网络,您可能需要从默认值中增加缓冲区大小。

all-protocols acceptor

AMQP

STOMP

HornetQ

MQTT

useEpoll

如果使用支持它的系统(Linux),请使用 Netty epoll。与 NIO 传输相比,Netty 原生传输提供了更好的性能。此选项的默认值是 true。如果将选项设置为 false,则使用 NIO。

all-protocols acceptor

AMQP

amqpCredits

AMQP 生成者可以发送的最大消息数,无论消息总数如何。默认值为 1000

要了解有关如何使用分数阻止 AMQP 信息的更多信息,请参阅 第 7.3.2 节 “阻塞 AMQP 生成者”

all-protocols acceptor

AMQP

amqpLowCredits

代理 replenes producer 学分的较低阈值。默认值为 300。当生成者达到这个阈值时,代理会发送生成者足够的分数来恢复 amqpCredits 值。

要了解有关如何使用分数阻止 AMQP 信息的更多信息,请参阅 第 7.3.2 节 “阻塞 AMQP 生成者”

HornetQ 兼容性接收器

anycastPrefix

当连接到一个使用 anycastmulticast 地址时,客户端用来指定 anycast 路由类型的前缀。默认值为 jms.queue

有关配置前缀以使客户端在连接到地址时指定路由类型的更多信息,请参阅 第 4.6 节 “在接受器配置中添加路由类型”

multicastPrefix

当连接到一个使用 anycastmulticast 地址时,客户端用来指定 multicast 路由类型的前缀。默认值为 jms.topic

有关配置前缀以使客户端在连接到地址时指定路由类型的更多信息,请参阅 第 4.6 节 “在接受器配置中添加路由类型”

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat