【问题标题】:I have multiple queues and i want to set priorities to these queues. Is it possible in JMS?我有多个队列,我想为这些队列设置优先级。在 JMS 中可以吗?
【发布时间】:2014-09-04 20:44:34
【问题描述】:

如果我有 3 个优先级分别为 1,2 和 3 的队列。我希望我的消费者首先从优先级为 1 的队列中消费,然后是 2 等等。如果高优先级队列为空,消费者可以从低优先级队列中消费。 是否可以通过 JMS 或 ActiveMQ 或任何其他方式实现?如何实现?

【问题讨论】:

    标签: jms activemq priority-queue


    【解决方案1】:

    您必须使用此方法自己控制该逻辑。对于 ActiveMQ 或任何其他 JMS 提供者,您只是在使用另一个队列。

    但是,您可以将单个队列用于消息优先级。如in the documentation.所述,有几种不同的方法可以做到这一点

    如果您希望您的消费者尽可能简单,请让代理确定优先级。否则,您将需要使用选择器来处理多个消费者或低效的单一消费者逻辑。

    在这两种情况下,您的生产者只需足够聪明,即可将 JMSPriority 标头设置为逻辑规定的任何优先级。

    真正的唯一缺点是您需要专门为该队列设置代理端配置,而不是所有内容都是自动的。

    【讨论】:

    • 您能解释一下“经纪人如何确定优先级”吗?能再解释一下吗?
    • 如果你配置了一个队列策略的优先级消息="true" 那么代理将按优先级而不是先进先出的顺序发送消息。 ActiveMQ 使用的优先级在某种程度上取决于您使用的持久存储。我给你的链接中解释了所有内容。
    • 我们在 JMS 上使用 SOAP。如果假设我们发出 10 个请求并且这些请求消息保留在队列中,那么这些请求一次只处理一个。我们如何并行处理多个请求?
    • 拥有更多消费者(独立或并发)。每个消费者一次只能收到一条消息。无论您有 1 个还是 15 个队列,您都无法真正解决这个问题。
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2011-12-20
    相关资源
    最近更新 更多