使用多代理 ActiveMQ artemis 实例进行负载平衡

Load Balancing with multi broker ActiveMQ artemis instance

我需要你的帮助来建议我如何使用下图最好地实现负载平衡。在这里,我试图用 Master 创建 2 台机器,并期望 consumer/publisher 应用程序将使用一个通用的 URL(一个负载平衡的),我不应该在其中公开单个 VM 机器信息和端口 ID .只是负载均衡器应该负责路由..

这通常是我们在 F5 负载平衡器或 HTTP 负载平衡器的帮助下所做的..只是想知道是否可以通过 ActiveMQ 实现并且它是可取的..?

另一方面,我也尝试在weblogic上以这种方式配置以使用ActiveMQ队列中的数据 failover://(tcp://localhost:61616,tcp://localhost:61617)?randomize=true 但这没有帮助.. 或者 WebLogic 不理解这种格式。

消息连接是有状态的。它们不像 HTTP 连接那样是无状态的,因此不能像 HTTP 连接那样 load-balanced。 可能 可以配置 F5 来处理状态消息连接,但我不能肯定地说。我不是 F5 专家。

ActiveMQ Artemis 代理本身以及代理随附的 JMS 客户端都内置了 load-balancing 功能。这里要介绍的内容太多,因此我建议您 review the clustering documentation 了解相关详细信息.

您也可以尝试使用 broker balancer 功能。它目前处于试验阶段,但应该可以在 March/April time-frame 中的 2.21.0 版本中使用。它可以像 F5 一样用于您的消息连接,但它可以做一些更智能的事情,比如总是将某些客户端发送到同一节点,这可以促进某些 use-cases,这在传统集群中是不可能的。

您使用的 URL failover://(tcp://localhost:61616,tcp://localhost:61617)?randomize=true 是 ActiveMQ 5.x 附带的 OpenWire JMS 客户端。如果您使用的是 ActiveMQ Artemis 附带的核心 JMS 客户端,那么您应该使用这样的 URL:

(tcp://localhost:61616,tcp://localhost:61617)?ha=true