【发布时间】:2014-09-04 20:44:34
【问题描述】:
如果我有 3 个优先级分别为 1,2 和 3 的队列。我希望我的消费者首先从优先级为 1 的队列中消费,然后是 2 等等。如果高优先级队列为空,消费者可以从低优先级队列中消费。 是否可以通过 JMS 或 ActiveMQ 或任何其他方式实现?如何实现?
【问题讨论】:
标签: jms activemq priority-queue
如果我有 3 个优先级分别为 1,2 和 3 的队列。我希望我的消费者首先从优先级为 1 的队列中消费,然后是 2 等等。如果高优先级队列为空,消费者可以从低优先级队列中消费。 是否可以通过 JMS 或 ActiveMQ 或任何其他方式实现?如何实现?
【问题讨论】:
标签: jms activemq priority-queue
您必须使用此方法自己控制该逻辑。对于 ActiveMQ 或任何其他 JMS 提供者,您只是在使用另一个队列。
但是,您可以将单个队列用于消息优先级。如in the documentation.所述,有几种不同的方法可以做到这一点
如果您希望您的消费者尽可能简单,请让代理确定优先级。否则,您将需要使用选择器来处理多个消费者或低效的单一消费者逻辑。
在这两种情况下,您的生产者只需足够聪明,即可将 JMSPriority 标头设置为逻辑规定的任何优先级。
真正的唯一缺点是您需要专门为该队列设置代理端配置,而不是所有内容都是自动的。
【讨论】: