配置传输
传输配置选项
您可能首先使用的一种 URI 类型是传输 URI,用于使用某种传输连接到代理。通常,TCP 或 VM 是您首先使用的传输。
注意空格
以下所有 URI 配置都基于 java.net.URI 类,该类不允许使用空格。因此,如果您使用
failover:
或static:
URI,请不要在','
符号周围放置任何空格。
AUTO 传输
从 5.13.0 开始,ActiveMQ Classic 支持通过 TCP、SSL、NIO 和 NIO SSL 自动检测线路协议。支持 OpenWire、STOMP、AMQP 和 MQTT。有关详细信息,请参阅 AUTO 传输参考。
VM 传输
VM 传输允许客户端在 VM 内相互连接,而无需网络通信的开销。使用的连接不是套接字连接,而是使用直接方法调用来启用高性能嵌入式消息系统。
第一个使用 VM 连接的客户端将启动一个嵌入式代理。后续连接将连接到该代理。一旦所有到代理的 VM 连接都关闭,嵌入式代理将自动关闭。
有关更多信息,请参阅 VM 传输参考
AMQP 传输
从 5.8.0 开始,ActiveMQ Classic 支持 AMQP。有关详细信息,请参阅 AMQP 传输参考。
MQTT 传输
从 5.6.0 开始,ActiveMQ Classic 还支持 MQTT。它是一种轻量级发布/订阅消息传输。有关详细信息,请参阅 MQTT 传输参考。
TCP 传输
TCP 传输允许客户端使用 TCP 套接字连接到远程 ActiveMQ Classic。
有关更多信息,请参阅 TCP 传输参考
NIO 传输
与 TCP 传输相同,只是使用了 新 I/O (NIO) 包,这可能会提供更好的性能。Java NIO 包不应与 IBM 的 AIO4J 包混淆。
要从 TCP 切换到 NIO,只需更改 URI 的方案部分。以下是在代理的 XML 配置文件中定义的示例。
<broker>
...
<transportConnectors>
<transportConnector name="nio" uri="nio://0.0.0.0:61616"/>
</<transportConnectors>
...
</broker>
尝试在客户端使用 nio 传输 URL 将实例化常规 TCP 传输。有关更多信息,请参阅 NIO 传输参考
SSL 传输
这允许您使用 SSL 通过 TCP 进行通信。有关更多信息,请参阅 SSL 传输参考
NIO SSL 传输
可用性
自 5.6 可用
在 NIO 上实现 SSL 传输。这允许您将大量 SSL 客户端连接到单个代理实例。它仅是服务器端传输选项。
<broker>
...
<transportConnectors>
<transportConnector name="nio+ssl" uri="nio+ssl://0.0.0.0:61616"/>
</<transportConnectors>
...
</broker>
尝试在客户端使用 nio+ssl
传输 URL 将实例化常规 SSL 传输。
对等传输
对等传输为 ActiveMQ Classic 提供点对点网络。实际上发生的是,对等传输使用 VM 传输创建并连接到本地嵌入式代理,但该代理配置嵌入式代理以建立与其他对等嵌入式代理的网络连接。
有关更多信息,请参阅 对等传输参考
UDP 传输
这允许您通过 UDP 进行通信。
有关更多信息,请参阅 UDP 传输参考
组播传输
这允许您通过组播进行通信。
有关更多信息,请参阅 组播传输参考
HTTP 和 HTTPS 传输
这允许 ActiveMQ Classic 客户端和代理通过 HTTP 进行隧道传输。如果客户端不是 JMS,您可能想要查看 REST 或 Ajax 支持。
有关更多信息,请参阅 HTTP 和 HTTPS 传输参考
WebSocket 传输
该传输使用新的 HTML5 WebSocket 与代理交换消息。有关更多信息,请参阅 WebSocket 传输参考
Stomp 传输
一种纯文本传输,可与多种语言一起使用。有关更多详细信息,请参阅 Stomp。
通用 URI
您可以使用以下 URI 语法配置其他功能…
连接配置 URI
任何 Apache ActiveMQ Classic JMS 连接都可以使用 URL 或在 ActiveMQConnection 或 ActiveMQConnectionFactory 对象本身上显式设置属性来配置。
有关更多信息,请参阅 连接配置 URI
目标选项
您可以使用 目标选项 配置各种与消费者相关的选项,这些选项允许您使用 URI 语法配置目标。
代理配置 URI
您可以使用 代理配置 URI 配置嵌入式代理,可以使用来自 Java 的 BrokerFactory 帮助程序类或使用 activemq shell 脚本进行配置。有关更多详细信息,请参阅 如何运行代理
配置线路格式
任何涉及将消息编组到某种网络传输(如 TCP 或 UDP)上的传输通常会使用 OpenWire 格式。这可配置为自定义线路上的内容。
有关更多信息,请参阅 配置线路格式
高级协议 URI
以下高级协议可以通过 URI 配置
故障转移传输
故障转移传输在任何其他传输之上添加重新连接逻辑。这就是 ActiveMQ Classic 3 中以前称为可靠传输的内容。其配置语法允许您指定任意数量的复合 URI。故障转移传输随机选择一个复合 URI 并尝试建立到该 URI 的连接。如果它没有成功或随后失败,则将建立到列表中其他 URI 之一的连接。
有关更多信息,请参阅 故障转移传输参考
扇出传输
扇出传输在任何其他传输之上添加重新连接和复制逻辑。它用于将命令复制到多个代理。
有关更多信息,请参阅 扇出传输参考
使用发现
使用 TCP 等传输时,您通常希望使用 发现 来定位可用的代理。这与使用,例如,组播 不同 - 因为实际的主要通信是通过 TCP 进行的,但组播纯粹用于发现代理的位置。
发现传输
发现传输的工作方式与可靠传输完全相同,只是它使用发现代理来定位要连接到的 URI 列表。
有关更多信息,请参阅 发现传输参考
ZeroConf 传输
ZeroConf 传输提供 发现,它的工作方式类似于 发现传输,但它使用 ZeroConf 传输而不是使用我们自己的基于组播的发现机制(这允许您配置确切的组播地址和端口等)。
有关更多信息,请参阅 ZeroConf 传输参考
服务器端选项
在 ActiveMQ Classic 代理配置中,可以使用许多选项来更改服务器端 TransportConnector
的行为。这些是
属性名称 | 默认值 | 描述 |
---|---|---|
allowLinkStealing |
false |
默认情况下,这在 MQTT 传输中启用。链接窃取是指,两个或多个具有相同 ID(JMS 的 clientID)的连接中最后一个连接被认为是有效连接,并且代理会关闭较旧的连接。 |
discoveryURI| null` |
如果设置,则为客户端连接查找代理的组播发现地址。 | |
enableStatusMonitor |
false |
将监视连接以确定它们是否被阻止。 |
name |
null |
TransportConnector 实例的名称。 |
rebalanceClusterClients |
false |
在拓扑更改时会自动在集群中重新平衡客户端。 |
updateClusterClients |
false |
如果启用,将更新客户端连接(如果它们使用 failover:// 传输)对代理集群的更改。 |
updateClusterClientsOnRemove |
false |
如果代理从集群中删除,将更新客户端。 |
updateClusterFilter |
null |
逗号分隔的正则表达式列表。名称与模式匹配的代理将包含在客户端更新中。 |
uri |
null |
传输的绑定地址。 |
注意:红色属性仅是 5.10(及更高版本)选项。
示例配置
<broker>
<!-- ... -->
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" enableStatusMonitor="true"/>
</<transportConnectors>
<!-- ... -->
</broker>