嗨,我创建了三个在 EC2 上的集群中运行的 RabbitMQ 服务器
我想根据 CPU 利用率扩展 RabbitMQ 集群,但是当我发布消息时,只有一台服务器使用 CPU,而其他 RabbitMQ 服务器不使用 CPU
那么如何在 RabbitMQ 集群中分配负载
嗨,我创建了三个在 EC2 上的集群中运行的 RabbitMQ 服务器
我想根据 CPU 利用率扩展 RabbitMQ 集群,但是当我发布消息时,只有一台服务器使用 CPU,而其他 RabbitMQ 服务器不使用 CPU
那么如何在 RabbitMQ 集群中分配负载
RabbitMQ 集群旨在提高可扩展性,但系统并不是完全自动化的。
当您在集群中的某个节点上声明队列时,该队列仅在该节点上创建。因此,如果您有一个队列,则无论您发布到哪个节点,消息都会最终到达队列所在的节点。
要正确使用 RabbitMQ 集群,您需要确保执行以下操作:
或者,看看High Availability Queues。它们就像普通队列,但队列内容在多个节点上镜像。因此,在您的情况下,您将发布到一个节点,RabbitMQ 会将发布镜像到另一个节点,消费者将能够连接到任一节点,而不必担心因内部传输而使集群陷入困境。
这不是真的。查看有关该主题的文档。
发布到队列的消息被复制到所有镜像。无论消费者连接到哪个节点,消费者都连接到主节点,镜像会丢弃主节点已确认的消息。因此,队列镜像增强了可用性,但不会在节点之间分配负载(所有参与的节点各自完成所有工作)。