让我们假设有一个生产者,一个队列和一些在队列中订阅的使用者。
Producer -> Queue -> Consumers
队列包含有关生活事件的消息。这些消息应该接收所有使用者。
何时删除队列?
以及如何管理优先级,消费者必须从谁那里获得消息第一/最后(不要与消息优先级混淆)。
例如,我有10个消费者,我希望第5个消费者首先获得消息,然后在指定时间后剩下消费者。
答案 0 :(得分:1)
请注意:当一个队列中有许多使用者时,只要消息被正确使用和确认,他们中只有一个会收到给定消息。您需要将与使用者一样多的队列绑定到一个交换,以使所有使用者都收到消息。
对于您的优先级问题,没有内置的机制可以使消费者收到具有优先级概念的相同消息:存在消费者优先级(请参阅https://www.rabbitmq.com/consumer-priority.html),但是它被要求消费者接受给定的优先级。消息在给定队列中的其他消息之前发送,因此其他使用者不会收到此消息。您需要统筹消息的传递,还必须考虑一个更复杂的系统(可能是saga或resequencer?)。
请注意,您可以使用此pattern延迟消息。同样,这需要有多个队列。
最后,在许多情况下,删除队列。看看文档,这些都很好地解释了。