2014-09-04 46 views

回答

1

您必须使用此方法自己控制该逻辑。对于ActiveMQ或任何其他JMS提供者,您只需使用另一个队列。

但是,您可以使用单个队列来获取消息优先级。如何做到这一点有几种不同的方式如上所述in the documentation.

如果您希望您的消费者尽可能简单,那么请代理商确定优先级。否则,您将需要混淆多个消费者或使用选择器消耗的低效单消费者逻辑。

在这两种情况下,您的生产者只需要足够聪明就可以将JMSPriority标头设置为逻辑所说的任何优先级。

唯一的缺点是,您有一个经纪人端配置专门为该队列设置,而不是一切都是自动的。

+0

你能解释一下“经纪人如何计算优先权”吗?你能解释一下吗? – Swapnil 2014-09-04 15:36:55

+0

如果使用prioritizedMessages =“true”配置队列polciy,那么代理将按优先级顺序而不是FIFO顺序发送消息。 ActiveMQ使用的优先级在某种程度上取决于您使用的持久存储。所有内容都在我给你的链接中解释。 – 2014-09-04 16:04:20

+0

我们在JMS上使用SOAP。如果假设我们给出了10个请求,并且这些请求消息仍然保持在队列中,则这些请求一次只能处理一个请求。我们怎样才能并行处理多个请求? – Swapnil 2014-09-05 06:24:18