需求:I需要我的消息驱动bean ( MDB )能够从四个不同的队列中读取消息,并且应该根据队列的优先级读取消息。
假设-我有4个JMS队列A、B、C和D,优先级分别为8(最高)、7、6和5。所以,如果队列C中有500条消息,而队列A和B是空的。我的MDB应该使用来自队列C的消息。但是,当我在高优先级队列(A或B)中收到消息时,MDB应该停止从C中读取消息,并使用来自较高优先级队列的消息(直到队列为空),然后继续从低优先级队列中消费。
设置完成:,我正在使用JMS7.0,并在管理控制台中正确地设置了JMS队列的优先级。
高级性能
*优先权:指定
具体优先次序: 8*
问题:,但我的MDB仍然无法按预期读取。更重要的是,需要配置才能实现我的需求。
请做必要的事。提前谢谢。
发布于 2015-01-14 13:44:05
MDB在任何时候都只能从单个队列中驱动。来自该队列的消息将按优先级顺序使用。如果在发送消息时没有赋予优先级,则队列上设置的优先级是消息的默认优先级。
因此,在一组队列之间移动MDB是不可能的。
如果您希望单个使用者总是获得最高优先级的消息,则需要一个队列和一个MDB。或者,创建多个队列并在其中拆分消息--不同的MDB处理不同的优先级。
发布于 2015-01-14 14:28:18
对于您的场景,您只需要一个队列,并将具有不同优先级的消息放到队列中。MDB将根据优先次序读取消息。不要在WebSphere中的队列设置中设置任何优先级,但应用程序在将消息放入队列时必须正确设置优先级。MDB只能在单个队列上侦听。
https://stackoverflow.com/questions/27943588
复制相似问题