В настоящее время мы разрабатываем приложение с использованием JMS и activemq (5.5.1). Мы хотели бы определить более высокий приоритет для некоторых сообщений, чтобы они потреблялись в первую очередь. После установки производителя и потребителя (через spring (3.1) JMSTemplate) приоритет не работает полностью. Действительно, когда мы «выключаем» потребителя и отправляем некоторые сообщения, приоритет соблюдается, но когда мы добавляем сообщения, когда потребитель включен, сообщения принимаются в том же порядке, в котором они были отправлены.
Конфигурация довольно проста:
Приоритет был активирован в файле конфигурации 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);
Есть идеи? Это нормальное поведение или есть какая-то конфигурация, которую мы бы забыли?