2012-09-11 37 views
2

我想实现以下,交流与消息优先级

  • 消息与消息优先级到达消息代理
  • 他们发现他们的方式进入不同的队列,根据他们的消息优先

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

有没有办法让消息B roker流程Q1比其他流程更快。

  • 队列之间有优先权吗?
  • Q1的处理优先级高于Q2,还是更好的处理Q1的其他队列正在处理?
  • 交换本身是否可以成为一个优先级队列,然后反馈给其他队列?
  • 我看到有可能通过插件扩展默认交换,那里是否有任何已经实现了上述要求的东西?

这是否可行?或者这是否违背消息经纪人的基本理念?

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

我在8月28日的Qpid nabble论坛上发布了这条消息,但是'这个帖子还没有被邮件列表接受'。

谢谢你的时间。

回答

1

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

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

在一个优先级队列,具有较高优先级的消息将蛙跳在具有较低优先级的消息,将被较早拾取。您无需为每个优先级别定义单独的队列。

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

请注意,基于优先级的跳过只适用于消费队列中的消息。浏览不尊重优先级,你会看到排队顺序的消息。

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