【发布时间】:2010-11-11 11:19:03
【问题描述】:
对于不始终支持优先级消息的面向消息的中间件(例如 AMQP),当队列只有 FIFO 语义时,实现优先级消耗的最佳方式是什么?一般用例是这样一个系统,当队列中存在大量消息积压时,消费者在接收优先级较低的消息之前接收优先级较高的消息。
【问题讨论】:
-
可以有多个队列吗?如果是这样,我建议为高优先级消息设置一个单独的队列,该队列在标准队列之前首先查询,仅在优先级队列为空时使用。我不知道这是否符合您的情况,但这是我的第一个想法。
-
我同意 CSharpWithJava。我目前正在做一个大型消息传递应用程序,我认为从您的问题来看,您需要多个队列,因此您可以将较低 pri 消息卸载到较低 pri 队列,并立即读取高 pri。
-
注意 AMQP 确实具有从 0-9-1 规范 (rabbitmq.com/amqp-0-9-1-reference.html) 开始的优先级消息
标签: message-queue messaging priority-queue rabbitmq amqp