我正在尝试设置 2 个支持 HA 和故障转移的 ActiveMQ Artemis 服务器。但我在文档和本示例中看到的是 Artemis 不可扩展,因为我必须在代码中为每个 Artemis 节点设置连接和会话。这意味着如果我想通过添加第三台服务器来扩展 Artemis,那么我必须在存在与该服务器的连接和会话的情况下发布新的代码版本,对吗?
这是否也意味着当故障服务器启动并再次出现在集群上时,我必须手动创建一个新连接和一个新会话?
我正在尝试设置 2 个支持 HA 和故障转移的 ActiveMQ Artemis 服务器。但我在文档和本示例中看到的是 Artemis 不可扩展,因为我必须在代码中为每个 Artemis 节点设置连接和会话。这意味着如果我想通过添加第三台服务器来扩展 Artemis,那么我必须在存在与该服务器的连接和会话的情况下发布新的代码版本,对吗?
这是否也意味着当故障服务器启动并再次出现在集群上时,我必须手动创建一个新连接和一个新会话?
要以这种方式扩展,您必须使用使用 UDP 多播甚至 JGroups 的发现组。
然后,您可以在应用程序端设置发现配置以发现 Artemis 节点。所有这些都在文档的集群部分中通过示例进行了描述。
您引用的示例(部分)演示了如何在使用STRICT
<message-load-balancing>
. 这不是使用集群时通用客户端配置的示例。
您当然不需要连接到集群中的每个节点。在正常的集群环境中,您将有许多不同的客户端连接到仅一个集群节点,这将确保有效地使用消息。有关为集群配置代理以及该配置对客户端的影响的更多详细信息,请参阅集群文档。
在故障转移的情况下,您只需为 HA 配置连接(例如tcp://host:61616?ha=true
),如果主节点发生故障,它将自动连接到从节点。有关配置代理以实现高可用性的更多详细信息,请参阅HA 文档。