我们目前正在开发一个使用JMS和activemq(5.5.1)的应用程序。 我们希望为某些消息定义更高的优先级,这将使它们首先被消费。 设置生产者和消费者后(通过spring(3.1)JMSTemplate),优先级不能完全工作。实际上,当我们“关闭”消费者并发送一些消息时,优先级是受到尊重的,但是当我们在消费者开启时添加消息时,消息按照它们发送的相同顺序被接收。ActiveMQ的优先级
的配置也非常简单:
重点是在ActiveMQ的配置文件启动:
<policyEntries>
<policyEntry queue=">" prioritizedMessages="true"/>
...
</policyEntries>
和QoS,生产者模板配置启用:
<bean id="jmsOCRTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="destination_ocr" />
<property name="explicitQosEnabled" value="true" />
</bean>
要发送具有高优先级的消息,我们只需更改生产者端的模板优先级属性:
template.setPriority(9);
任何想法?这是正常的行为,还是有一些我们已经忘记的配置?
你可能想给最新的ActiveMQ 5.6快照去,因为它在优先领域有几个修复可以改善你的情况。 – 2012-01-13 19:43:19