2

我正在尝试执行以下操作,

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

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

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

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

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

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

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

感谢您的时间。

4

1 回答 1

1

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

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

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

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

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

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

于 2012-09-26T19:22:42.787 回答