首页 > 解决方案 > Artemis 集群中的 brokerURL

问题描述

我有一个带有两个主代理和两个从代理的 Artemis 代理集群。我正在尝试以编程方式将消息推送到此集群。我了解只有一个代理,在 ActiveMQConnectionFactory.setBrokerUrl(String brokerURL) 中设置的 brokerUrl 将是 tcp://10.10.100.217:61616。

现在,我有一个包含两个主代理和两个从代理的集群,那么在这种情况下,brokerURL 是什么?broker.xml 中的组地址是 231.7.7.7。

标签: javaactivemq-artemis

解决方案


有几种方法可以解决这个问题。

首先,您可以将所有主机和端口添加到 URL,例如:

(tcp://master1:61616,tcp://slave1:61616,tcp://master2:61616,tcp://slave2:61616)

当核心客户端连接到主服务器时,它会自动收到任何备份通知,但您不能保证其中一个预定义的主服务器实际上会启动,因此在 URL 中列出所有代理是最安全的。

其次,您可以使用来自客户端的发现,例如:

udp://231.7.7.7:9876

在这里,客户端使用代理用来形成集群的相同 UDP 多播地址和端口。客户端将侦听此多播地址和端口以发现哪些代理已启动,然后连接到其中一个。

当然,要使其正常工作,UDP 多播数据包必须能够从代理到达客户端,这通常意味着它们必须位于同一网络子网中,因为 UDP 多播通常不会在此范围之外进行广播。


推荐阅读