首页 > 解决方案 > 使用消费者的多个实例(HA 集群)

问题描述

我在查找有关如何扩展 RabbitMQ 消费者的任何信息时遇到问题,特别是如何使用同一组件的多个实例。

假设我有两个组件;A 和 B。我将每个组件的三个实例设置为 HA 集群。假设 A.1 发送一条消息,其密钥与 B 匹配。我只希望 B 的一个实例使用此消息,而不是全部 3 个。

你能指点我一些解释如何做到这一点的文档吗?理想情况下,一些关于所采用的负载平衡方法的信息将不胜感激。

标签: rabbitmq

解决方案


应该不是问题,因为 RabbitMQ 使用各种异步架构模式来解耦应用程序,其中之一是循环

循环赛

默认情况下,当消息进入队列时,RabbitMQ 会立即将每条消息按顺序分派(或预分配)给下一个消费者。它平均分配消息,平均每个消费者将获得相同数量的消息。

这种方法的一个缺点是当消息使用不均匀的资源时。在有两个工人的情况下,当所有奇数消息都很重而偶数消息很轻时,一个工人会一直很忙,而另一个工人会做很少的工作。

如下例所示,两个消费者都将以循环方式获取消息,因此在您的情况下,如果三个实例绑定到同一个队列,那么一条消息将只发送给其中一个消费者,关键是他们应该绑定到一个公共队列。 在此处输入图像描述


推荐阅读