RabbitMQ 多个消费者订阅同一个队列并获取相同的消息

Ene*_*Boy 3 rabbitmq

我正在考虑多个消费者可以从他们订阅的“相同”队列中获取“相同”消息吗?

这意味着consumer_1和consumer_2都订阅了queue_1,当发布者发布一条消息时,两个消费者可以同时获取该消息吗?

如果是,我该如何实施?

Kav*_*lai 8

这不可能。队列中的某一特定消息不能被多个消费者使用。

请记住,在 AMQP 中,消息始终从队列中消费。

  1. 队列中的一条消息只能被一个消费者消费
  2. 您可以让竞争的消费者共享队列中的工作负载

非常高水平的 AMQP 流程

  1. 生产者向交易所发布消息。
  2. 交换器接收消息并将其路由到队列。(基于消息属性、交换器类型和绑定)
  3. 消费者处理消息或将其保留在队列中直到被消费。

根据您在步骤 2 中创建的交换类型和绑定,您可以在 AMQP 中实现不同的消息交换模式。无论是点对点、发布订阅还是多播,都将基于步骤 2 中发生的情况。

一篇好文章,有漂亮的图表

https://www.cloudamqp.com/blog/2015-09-03-part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html#standard-rabbitmq-message-flow

在此输入图像描述

在此输入图像描述