配置传输
传输配置选项
您可能首先使用的一种 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 传输相同,只是使用了 New 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 |
将监控连接以确定它们是否被阻止。 |
名称 |
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>