使用 Rabbitmq 实现阻止消息(或在发布者和使用者之间切换)



我在队列中有 8 个消费者,他们中的任何一个都可以拾取消息,一旦处理完毕,这会影响数据库。大多数消息可以异步运行,但在少数消息上,我们需要停止队列消耗,直到该消息被其中一个使用者完全处理。在此期间,其他 7 个使用者不应从队列中消费。

有没有办法在 rabbitmq 中实现这一点,而不是做一个应用程序级解决方案(这可能很难实现)?

我不知道

严格的 RabbitMQ 更改来使其工作。 但是,这是一种不需要修改任何旧代码的方法,除了重命名生产者正在放置消息的队列。 它确实需要编写一个新的消费者:

    创建
  1. 具有单次使用的队列,并更新创建者以将消息发送到该队列。
  2. 该队列的使用者应处理任何同步消息。
  3. 由于它是单个使用者,因此所有其他消息都将在队列中阻塞,直到完成处理。
  4. 单个使用者应将任何异步消息转发到原始队列,供其他八个使用者处理。

由于单个使用者只是转发异步消息,因此它可以快速完成,并且吞吐量应该没有问题。

最新更新