我看过的大多数消息传递系统似乎都对优先级消息队列有基本的支持(如果有的话)。例如,AMQP仅specifies至少2个优先级。 RabbitMQ,一种AMQP实现,doesn't support任何优先级。几天后,ActiveMQ在5.4版中将具有10个消息优先级的getting support。 JMS spec指定10个优先级。
单词的非消息意义上的priority queue根据具有不受限制的优先级范围的任意字段对内容进行排序。为什么这样的实现作为消息传递系统的一部分不存在?正如我在标题中所问的那样,优先级是固有的非消息概念吗?
我意识到一个答案可能是优先级的概念引入了消息,即在处理更高优先级的消息时,消息无限排队的可能性。还有其他原因吗?
最佳答案
通常,消息队列系统用于确保不同系统之间的消息传递。
通常,存在某种一次性的保证,并且通常会进一步保证消息将按顺序排列。
总的来说,这将通知您正在构建并连接在一起的系统的设计。
解耦系统之间的优先级概念通常没有多大意义。
也就是说,一种常见的解决方法是拥有两个队列,一个高优先级,一个后台优先级。但是,固有的问题随后变得很清楚,因为当接收到更高优先级的请求时,接收系统当然可能无法停止处理低级别的请求,因此它们通常在该粒度级别上按顺序完成。
关于message-queue - 消息优先级在消息队列系统中是否本质上不重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3465675/