首页 > 解决方案 > 高优先级的消息全部投递完毕后,如何投递低优先级的消息?

问题描述

如何保证优先级2的消息只有在所有优先级1的消息都送达后才能送达?

我正在向我的用户发送通知,并且每个用户都有资格获得多个通知。这些通知具有与之相关的优先级,目标是用户只接收最高优先级的消息。

目标- 我想在开始传递优先级 2 的消息之前传递所有优先级 1 的消息。

约束- 我不能同时传递不同优先级的通知消息。我只能同时传递相同优先级的通知消息。

理想情况下,我想拥有

  1. 我将单个优先级的所有消息转储到的队列。该队列将有多个消费者同时传递这些消息。

  2. 一旦所有优先级为 1 的消息都已交付并且队列为空,我会将优先级为 2 的所有消息转储到队列中,以便由多个消费者同时交付

  3. 对后续优先级继续上述过程

问题- 我想知道如何在 RabbitMQ 中实现这个设计/流程?或者是否有更好的方法来处理这种情况。

如果我对某些事情无法理解,请告诉我,并可以添加更多细节来澄清。

谢谢

标签: node.jsrabbitmq

解决方案


RabbitMQ 支持优先级队列。请仔细阅读文档,尤其是具有许多不同优先级的性能影响。


注意: RabbitMQ 团队会监控邮件列表rabbitmq-users有时只会在 StackOverflow 上回答问题。


推荐阅读