Websphere中的JMS队列优先级问题

时间:2015-01-14 13:02:07

标签: jms websphere-7 mq

要求: 我需要我的消息驱动bean(MDB)能够从四个不同的JMS队列中读取,MDB应该根据队列的优先级读取消息。

说 - 我有4个JMS队列A,B,C和D,优先级分别为8(最高),7,6和5。因此,如果队列C中有500条消息,则队列A和B为空。我的MDB应该使用来自队列C的消息。但是当我在更高优先级队列(A或B)中收到消息时,我的MDB应该停止从C读取,并使用来自更高优先级队列的消息(直到队列为空),然后从较低优先级队列继续消费。

设置完成: 我正在使用WebSphere 7.0并在管理控制台中正确设置了JMS队列的优先级。

高级属性

*优先级:指定

指定的优先级:8 *

问题: 但我的MDB仍未按预期阅读。 实现我的要求需要哪些更多配置。

请做必要的事。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

MDB只能在任何时候从单个队列驱动。来自该队列的消息将按优先级顺序使用。如果在发送消息时未给出优先级,则队列上设置的优先级是消息的默认优先级。

因此,在一组队列之间移动MDB是不可能的。

如果您希望单个消费者始终获得最高优先级的消息,则您需要一个队列和一个MDB。或者创建多个队列并在它们之间拆分消息 - 使用不同的MDB处理不同的优先级

答案 1 :(得分:0)

对于您的场景,您只需要一个队列,并将具有不同优先级的消息放入队列。 MDB将根据优先级读取消息。不要在WebSphere中的队列设置中设置任何优先级,但是您的应用程序必须在将消息放入队列时正确设置优先级。 MDB只能侦听单个队列。