交换和消息优先级

时间:2012-09-11 11:10:53

标签: jms message-queue priority-queue qpid

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

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

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

有没有办法让Message Broker进程Q1比其他进程更快。

  • 队列之间是否可以优先考虑?
  • Q1处理的优先级高于Q2,或者更好的处理Q1阻止其他队列处理?
  • 交换本身可以是优先级队列,而后者又可以提供其他队列吗?
  • 我看到可以通过插件扩展默认交换,是否有任何已经实现上述要求的内容?
这是可行的吗?或者这是否违背了消息经纪人的基本理念?

使用优先级消息时是否有指向最佳做法的链接?

我确实在8月28日在Qpid nabble论坛上发布了这条消息 - 但是“这篇文章尚未被邮件列表接受”。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

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

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

在优先级队列中,优先级较高的邮件会跳过优先级较低的邮件,并且会提前获取。您无需为每个优先级定义单独的队列。

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

请注意,基于优先级的跳过仅适用于消耗队列中的消息。浏览不尊重优先级,您将按照排队顺序查看消息。

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