配置传输

使用 ActiveMQ Classic > 配置传输

传输配置选项

您可能首先使用的一种 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,您可能想要查看 RESTAjax 支持。

有关更多信息,请参阅 HTTP 和 HTTPS 传输参考

WebSocket 传输

该传输使用新的 HTML5 WebSocket 与代理交换消息。有关更多信息,请参阅 WebSocket 传输参考

Stomp 传输

一种纯文本传输,可与多种语言一起使用。有关更多详细信息,请参阅 Stomp

通用 URI

您可以使用以下 URI 语法配置其他功能…

连接配置 URI

任何 Apache ActiveMQ Classic JMS 连接都可以使用 URL 或在 ActiveMQConnectionActiveMQConnectionFactory 对象本身上显式设置属性来配置。

有关更多信息,请参阅 连接配置 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>

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。