java - Artemis 集群中的 brokerURL
问题描述
我有一个带有两个主代理和两个从代理的 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)
当核心客户端连接到主服务器时,它会自动收到任何备份通知,但您不能保证其中一个预定义的主服务器实际上会启动,因此在 URL 中列出所有代理是最安全的。
其次,您可以使用来自客户端的发现,例如:
udp://231.7.7.7:9876
在这里,客户端使用代理用来形成集群的相同 UDP 多播地址和端口。客户端将侦听此多播地址和端口以发现哪些代理已启动,然后连接到其中一个。
当然,要使其正常工作,UDP 多播数据包必须能够从代理到达客户端,这通常意味着它们必须位于同一网络子网中,因为 UDP 多播通常不会在此范围之外进行广播。
推荐阅读
- c# - 添加一个简单的 TagHelper 会导致此错误:“尚未为页面调用 RenderBody”
- laravel - 如何在 laravel eloquent 中基于一对多关系中的单列删除所有行?
- javascript - 反应js在显示后从状态填写表格
- python - 现有类不在目录中
- python - 带break的基本python while循环
- javascript - 如何在 .innerHTML 中显示对象中所选答案的结果
- python - 我们如何在 python 的 2D 列表中的同一个地方附加不同的单词?
- python-3.x - Python 3 导入 pynput xlib 警告
- azure - Azure Durable Functions,“IsReplaying”标志的意外值
- amazon-web-services - 在 QuickSight 中可视化几天内的时间值