URI 协议
ActiveMQ Classic 被设计为支持多种不同的 拓扑结构 和协议。您使用哪一种取决于您的消息传递需求、服务质量和网络拓扑。
下表描述了 JMS 客户端可用的不同网络协议,以及显示用于启用此通信协议的连接 URL 字符串。在代理端,还支持其他 传输。您可以在 ActiveMQConnectionFactory(在构造函数中或通过 brokerURL 属性)中指定连接 URL。
例如,如果您不想费心设置 JNDI 等,只是想创建一个 JMS 连接,您可以执行以下操作
ConnectionFactory factory = new ActiveMQConnectionFactory(“tcp://somehost:61616”); Connection connection = factory.createConnection();
协议摘要
协议 | 示例 | 描述 | 服务器? |
---|---|---|---|
VM | vm://host:port | 客户端在同一个 JVM 中相互连接。这确实使用了异步通道和一个单独的工作线程。您可以使用查询参数(例如 vm://127.0.0.1?async=false)启用同步发送。 | 是 |
TCP | tcp://host:port | 客户端连接到给定 URL 上的代理 | 是 |
SSL | ssl://host:port | 客户端连接到给定 URL 上的代理 | 是 |
故障转移 | failover:(Uri1,Uri2,Uri3,…,UriN) | 提供一个要连接的可能 URI 列表,并随机选择一个。如果连接失败,则传输将自动重新连接到另一个。 | |
对等 | peer://serviceName | 创建一个给定服务名称的节点的纯点对点网络。在对等模式下,没有服务器,节点只是自动连接并建立一个对等网络。serviceName 允许您将网络相互分离,例如开发、测试、UAT 和生产。 | |
发现 | discovery://host:port | 使用 发现 连接到正确通道名称的可用代理。如果可以找到多个代理,则随机选择一个。如果连接失败,则选择另一个代理(如果有)。 | |
Zeroconf | zeroconf:_activemq.broker.development. | 使用 Zeroconf 连接到正确 Zeroconf 服务名称的可用代理。如果可以找到多个代理,则随机选择一个。如果连接失败,则选择另一个代理(如果有)。 | |
HTTP | http://host:port | 客户端使用 HTTP 隧道连接到代理,并使用适合通过防火墙的 XML 有效负载。 | 是 |
UDP | udp://host:port | 客户端连接到给定 URL 上的代理 | |
多播 | multicast://host:port | 没有服务器,虽然只适用于发布/订阅。一个纯点对点网络,所有流量都在其中多播,并且过滤是在客户端执行的。 |
上面的“服务器”列表示明协议是否可以在 ActiveMQ Classic 代理传输连接器中使用。所有上述协议都可以在 JMS 客户端中用于连接到消息传递结构;只有那些指示的协议可以在代理端传输连接器中使用。
连接到 ActiveMQ Classic 代理时,这可能驻留在您的 JVM 中本地,或者驻留在其他机器上的远程位置。如果您想启用在 JVM 中部署 ActiveMQ Classic,您可以在 ActiveMQConnectionFactory 上启用 useEmbeddedBroker 属性。
请参考 拓扑结构概述,了解我们如何在许多不同的拓扑结构中使用 ActiveMQ Classic 来满足您的消息传递需求。
指定要连接的多个 URL
如果您想要完整的 高可用性 来提供故障转移和自动重新连接,您可以使用“failover:”前缀
failover:(tcp://foo:61699,tcp://bar:61617,tcp://whatnot:61698)
有关更多详细信息,请参阅 配置传输