Artemis 集群中的 brokerURL
brokerURL in an Artemis cluster
我有一个 Artemis 代理集群,其中包含两个主代理和两个从属代理。我正在尝试以编程方式将消息推送到此集群。我知道只有一个经纪人在 ActiveMQConnectionFactory.setBrokerUrl(String brokerURL) 中设置的 brokerUrl 将是
tcp://10.10.100.217:61616.
现在,我有一个包含两个主代理和两个从代理的集群,那么在那种情况下,brokerURL 是什么? broker.xml 中的组地址是 231.7.7.7.
有几种方法可以解决这个问题。
首先,您可以将所有主机和端口添加到 URL,例如:
(tcp://master1:61616,tcp://slave1:61616,tcp://master2:61616,tcp://slave2:61616)
当核心客户端连接到主控时,它会自动收到任何备份的通知,但您不能保证其中一个预定义的主控会真正启动,因此最安全的做法是只列出 all URL 中的经纪人。
其次,您可以使用来自客户端的发现,例如:
udp://231.7.7.7:9876
这里客户端使用与代理用来形成集群的相同的 UDP 多播地址和端口。客户端将侦听此多播地址和端口以发现哪些代理已启动,然后连接到其中之一。
当然,要使其正常工作,UDP 多播数据包必须能够从代理到达客户端,这通常意味着它们必须位于同一网络子网上,因为 UDP 多播通常不会超出此范围进行广播。
我有一个 Artemis 代理集群,其中包含两个主代理和两个从属代理。我正在尝试以编程方式将消息推送到此集群。我知道只有一个经纪人在 ActiveMQConnectionFactory.setBrokerUrl(String brokerURL) 中设置的 brokerUrl 将是 tcp://10.10.100.217:61616.
现在,我有一个包含两个主代理和两个从代理的集群,那么在那种情况下,brokerURL 是什么? broker.xml 中的组地址是 231.7.7.7.
有几种方法可以解决这个问题。
首先,您可以将所有主机和端口添加到 URL,例如:
(tcp://master1:61616,tcp://slave1:61616,tcp://master2:61616,tcp://slave2:61616)
当核心客户端连接到主控时,它会自动收到任何备份的通知,但您不能保证其中一个预定义的主控会真正启动,因此最安全的做法是只列出 all URL 中的经纪人。
其次,您可以使用来自客户端的发现,例如:
udp://231.7.7.7:9876
这里客户端使用与代理用来形成集群的相同的 UDP 多播地址和端口。客户端将侦听此多播地址和端口以发现哪些代理已启动,然后连接到其中之一。
当然,要使其正常工作,UDP 多播数据包必须能够从代理到达客户端,这通常意味着它们必须位于同一网络子网上,因为 UDP 多播通常不会超出此范围进行广播。