【问题标题】:Exchanges and Message priorities交流和消息优先级
【发布时间】:2012-09-04 07:17:54
【问题描述】:

我正在尝试实现以下内容,

  • 消息以消息优先级到达消息代理
  • 他们根据自己的消息优先级找到进入各种队列的方式

所以 Q1 有优先级为 1 的消息 Q2 有优先级为 2 的消息,依此类推..

有没有办法让 Message Broker 处理 Q1 比其他处理更快。

  • 是否可以在队列之间设置优先级?
  • Q1 具有比 Q2 更高的处理优先级,还是 Q1 的处理更好地阻止其他队列被处理?
  • 交换器本身能否成为优先级队列,依次为其他队列提供数据?
  • 我看到可以通过插件扩展默认交换,是否有任何东西已经实现了我的上述要求?

这是可行的吗?还是这违背了消息代理的基本理念?

在使用优先消息时是否有最佳实践链接?

我确实于 8 月 28 日在 Qpid nabble 论坛上发布了此消息 - 但“此帖子尚未被邮件列表接受”。

感谢您的宝贵时间。

【问题讨论】:

    标签: jms message-queue priority-queue qpid


    【解决方案1】:

    在 qpid 中,您可以将队列定义为“优先队列”。

    session.createQueue(queueName;{create:always, node:{type:queue,
                        x-declare:{arguments:{'x-qpid-priorities':3}}}})
    

    在优先级队列中,具有较高优先级的消息将跳过具有较低优先级的消息,并且会更早被拾取。您无需为每个优先级定义单独的队列。

    x-qpid-priorities 参数指定了支持多少不同的优先级 排队。

    但请注意,基于优先级的跳跃只适用于消费队列中的消息。浏览不考虑优先级,您将看到按入队顺序排列的消息。

    为每个优先级实现单独的队列并不是很有用,但如果您坚持这样做,您将不得不自己管理基于优先级的消耗。您可以实现一个消费者来检查高优先级队列中的消息,然后仅在第一个队列为空时才检查低优先级队列。

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 2015-12-23
      • 1970-01-01
      • 2015-02-11
      • 2014-02-08
      • 2023-04-01
      • 1970-01-01
      • 2021-05-14
      • 2013-02-22
      相关资源
      最近更新 更多