message-queue - 消息优先级在消息队列系统中是否本质上不重要?

标签 message-queue messaging activemq rabbitmq amqp

我看过的大多数消息传递系统似乎都对优先级消息队列有基本的支持(如果有的话)。例如,AMQP仅specifies至少2个优先级。 RabbitMQ,一种AMQP实现,doesn't support任何优先级。几天后,ActiveMQ在5.4版中将具有10个消息优先级的getting supportJMS spec指定10个优先级。

单词的非消息意义上的priority queue根据具有不受限制的优先级范围的任意字段对内容进行排序。为什么这样的实现作为消息传递系统的一部分不存在?正如我在标题中所问的那样,优先级是固有的非消息概念吗?

我意识到一个答案可能是优先级的概念引入了消息,即在处理更高优先级的消息时,消息无限排队的可能性。还有其他原因吗?

最佳答案

通常,消息队列系统用于确保不同系统之间的消息传递。

通常,存在某种一次性的保证,并且通常会进一步保证消息将按顺序排列。

总的来说,这将通知您正在构建并连接在一起的系统的设计。

解耦系统之间的优先级概念通常没有多大意义。

也就是说,一种常见的解决方法是拥有两个队列,一个高优先级,一个后台优先级。但是,固有的问题随后变得很清楚,因为当接收到更高优先级的请求时,接收系统当然可能无法停止处理低级别的请求,因此它们通常在该粒度级别上按顺序完成。

关于message-queue - 消息优先级在消息队列系统中是否本质上不重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3465675/

相关文章:

java - 关键的 RabbitMQ 方法参数

php - 获取线程中的最新消息

java - 在 Activemq 中的同一连接中创建消费者和临时队列?

java - ActiveMQ 持久主题、消息预订阅?

transactions - jms异常导致的Glassfish数据库连接泄漏

ruby - 如何使用 bunny RabbitMQ 客户端阻止订阅?

java - Apache Kafka 是否提供异步订阅回调 API?

c - 不同的Linux消息队列有相同的id?

linux - 控制台Ant下ActiveMQ无法运行的例子

amazon-web-services - 使用 Google Cloud Pub/Sub 时如何在 AWS/SQS 中实现 "locked"功能?