【问题标题】:Does rabbitmq support to push the same data to multi consumers?rabbitmq 是否支持将相同的数据推送给多个消费者?
【发布时间】:2014-06-12 08:13:20
【问题描述】:

我有一个 rabbitmq 集群用作工作队列。有 5 种消费者想要消费完全相同的数据。

我现在知道的是使用扇出交换将数据“复制”到 5 个不同的队列。并且 5 个消费者可以消费不同的队列。这是一种浪费资源,因为文件队列中的数据是相同的。

我的问题是,rabbitmq 是否支持将相同的数据推送给多个消费者?就像一条消息需要在指定的时间内被确认才能被删除。


我从 rabbitmq 电子邮件组得到了以下答复。简而言之,答案是否定的……而我上面所做的是正确的方法。

http://rabbitmq.1065348.n5.nabble.com/Does-rabbitmq-support-to-push-the-same-data-to-multi-consumers-td36169.html#a36170

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    ...扇出交换将数据“复制”到 5 个不同的队列。并且 5 个消费者可以消费不同的队列。这是一种浪费资源,因为文件队列中的数据是相同的。

    如果你不想重复消息,你可以从一个队列中使用 5 个消费者。

    rabbitmq 是否支持将相同的数据推送给多个消费者

    在 AMQP 协议术语中,您发布消息以进行交换,然后代理 (RabbitMQ) 决定如何处理消息 - 假设它找出了用于(一个或多个)的队列消息,然后将该消息放在该队列的顶部( RabbitMQ 中的队列是经典的 FIFO 队列,它以某种方式破坏了 RabbitMQ 中的 AMQP 实现)。只有在该消息可能被传递给消费者之后(或者由于队列长度限制或每个队列或每个消息的 ttl,如果有的话)。

    消息需要确认指定次数才能删除

    消息发布后无法更改消息正文或属性(实际上,Dead Letter Exchanges 扩展名和其他一些可能会更改路由键,例如添加,删除和更改某些标头,但这是非常具体的情况) .因此,如果您想跟踪 ack 的编号,您必须重新发布已更改的正文或标头的已消费消息(取决于您计划将 ack 的计数器存储在哪里,但标头非常适合此。

    另外请注意,有redeliverd message 属性表示消息是否已经被消费,但随后被重新传递。此标志不计算重新投递数量,因此它的使用非常有限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多