何时将邮件从队列中删除?

时间:2018-12-19 22:07:57

标签: rabbitmq

让我们假设有一个生产者,一个队列和一些在队列中订阅的使用者。

Producer -> Queue -> Consumers

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

何时删除队列?

  1. 何时所有消费者都收到消息?
  2. 或者当消费者之一确认带有标志确认(true)的消息时?

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

例如,我有10个消费者,我希望第5个消费者首先获得消息,然后在指定时间后剩下消费者。

1 个答案:

答案 0 :(得分:1)

请注意:当一个队列中有许多使用者时,只要消息被正确使用和确认,他们中只有一个会收到给定消息。您需要将与使用者一样多的队列绑定到一个交换,以使所有使用者都收到消息。

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

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

最后,在许多情况下,删除队列。看看文档,这些都很好地解释了。