【问题标题】:When message will be erased from queue?什么时候从队列中删除消息?
【发布时间】:2018-12-19 22:07:57
【问题描述】:

假设我们有一个生产者,一个队列和一些订阅队列的消费者。

Producer -> Queue -> Consumers

队列包含有关生活事件的消息。这些消息应该接收所有消费者。

什么时候清除队列?

  1. 何时所有消费者都收到消息?
  2. 或者当其中一位消费者使用标志 ack (true) 确认消息时?

以及如何管理优先级,必须从消费者那里获得消息first/last(不要与消息优先级混淆)。

例如,我有 10 个消费者,我希望第五个消费者首先收到消息,在指定时间后剩下的消费者。

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    注意:当一个队列上有很多消费者时,只要正确消费和确认消息,其中只有一个会收到给定的消息。您需要将与消费者一样多的队列绑定到一个交换器,以让所有消费者都接收到消息。

    对于您的优先级问题,没有内置机制可以让消费者接收具有优先级概念的相同消息:消费者优先级存在(请参阅https://www.rabbitmq.com/consumer-priority.html),但它是让消费者在收到给定消息之前给定队列中的其他人,因此其他消费者不会收到此消息。如果您需要协调消息的传递,您必须考虑更复杂的系统(可能是sagaresequencer?)。

    请注意,您可以使用此pattern 延迟消息。同样,这需要有多个队列。

    最后,删除队列有很多场景。看看文档,这些都很好解释。

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 2015-10-18
      • 1970-01-01
      • 2014-06-07
      • 2015-12-20
      • 2018-09-28
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多