AUTO
从 5.13.0 版本开始,ActiveMQ Classic 支持线格式协议检测。OpenWire、STOMP、AMQP 和 MQTT 可以自动检测。这允许一个传输用于所有 4 种类型的客户端。
在 TCP 上启用 AUTO
要在 TCP 连接上配置 ActiveMQ Classic 自动线格式检测,请使用 auto
传输前缀。例如,在您的 XML 文件中添加以下传输配置
<transportConnector name="auto" uri="auto://127.0.0.1:5671"/>
在 SSL 上启用 AUTO
要在 SSL 连接上配置 ActiveMQ Classic 自动线格式检测,请使用 auto+ssl
传输前缀。例如,在您的 XML 文件中添加以下传输配置
<transportConnector name="auto+ssl" uri="auto+ssl://127.0.0.1:5671"/>
- 有关在 ActiveMQ Classic 中使用 SSL 的更多详细信息,请参阅以下文章 (如何使用 SSL)。
在 NIO 上启用 AUTO
要在 NIO TCP 连接上配置 ActiveMQ Classic 自动线格式检测,请使用 auto+nio
传输前缀。例如,在您的 XML 文件中添加以下传输配置
<transportConnector name="auto+nio" uri="auto+nio://127.0.0.1:5671"/>
在 NIO SSL 上启用 AUTO
要在 NIO SSL 连接上配置 ActiveMQ Classic 自动线格式检测,请使用 auto+nio+ssl
传输前缀。例如,在您的 XML 文件中添加以下传输配置
<transportConnector name="auto+nio+ssl" uri="auto+nio+ssl://127.0.0.1:5671"/>
配置 AUTO 传输选项
有一些可以设置的配置选项。
参数名称 | 默认值 | 描述 |
---|---|---|
protocolDetectionTimeOut | 30000 | 连接超时前的毫秒数。这类似于 maxInactivityDuration。如果客户端建立连接但没有发送数据或足够的协议检测数据,则线程将一直等待更多数据进入套接字。这将允许代理在经过一段时间后,如果它们没有完成协议初始化,则杀死连接。默认值为 30 秒。设置为 <= 0 以禁用此功能。 |
maxConnectionThreadPoolSize | MAX_INT | 此选项允许配置处理连接尝试的线程池的最大大小。降低此数字可以帮助防止代理在同时有许多不同的客户端尝试连接时耗尽线程。默认情况下,通过设置为 MAX_INT 来禁用它。 |
一个使用 5 秒的最大协议检测时间的示例
<transportConnector name="auto" uri="auto://127.0.0.1:5671?protocolDetectionTimeOut=5000"/>
配置线格式
OpenWire 是 ActiveMQ Classic 使用的默认线格式。它为高速消息传递提供了一种高效的二进制格式。OpenWire 选项可以在 JMS 客户端的连接 URI 字符串或代理的传输绑定 URI 上配置。
参数前缀 | 描述 |
---|---|
wireFormat. | 将选项应用于所有线格式。 |
wireFormat.default. | 将选项应用于默认格式,即 OpenWire |
wireFormat.stomp. | 将选项应用于 STOMP 线格式 |
wireFormat.amqp. | 将选项应用于 AMQP 线格式 |
wireFormat.mqtt. | 将选项应用于 MQTT 线格式 |
应用于所有格式的属性示例
<transportConnector name="auto" uri="auto://127.0.0.1:5671?wireFormat.maxFrameSize=1000"/>
仅应用于 OpenWire 的属性示例将是
<transportConnector name="auto" uri="auto://127.0.0.1:5671?wireFormat.default.maxFrameSize=1000"/>
配置已启用的线协议
默认情况下,所有线协议都可用。可以通过设置属性 auto.protocols.
来配置仅启用某些格式。
值 | 描述 |
---|---|
default | 启用 OpenWire |
amqp | 启用 AMQP 格式 |
stomp | 启用 STOMP 格式 |
mqtt | 启用 MQTT 格式 |
一个仅显示启用 OpenWire 和 STOMP 的示例
<transportConnector name="auto" uri="auto://127.0.0.1:5671?auto.protocols=default,stomp"/>