У меня есть клиент JMS, который отправляет сообщения в очередь Weblogic с приоритетом. Для простоты у нас есть 2 приоритета: 0 и 9.
На стороне сервера у нас в этой очереди развернуто приложение Spring (с Spring MDP - Message Driven Pojo). Вот декларация Spring Bean:
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="concurrentConsumers" value="20" />
<property name="connectionFactory" ref="jmsFactory" />
<property name="destination">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="${jms.inbound.queue}" />
</bean>
</property>
<property name="messageListener" ref="appMessageListener" />
</bean>
appMessageListener - класс, который реализует прослушиватель сообщений и имеет метод onMessage.
ТЕСТИРОВАНИЕ: ОСТАНОВИТЬ приложение и отправить 40 запросов 20 с приоритетом 0 и 20 с приоритетом 9. ЗАПУСК приложения.
Ожидаемый результат состоит в том, что MDP должен сначала выбрать и обработать сообщения с приоритетом 9, а затем сообщения с приоритетом 0.
На самом деле сообщения отбираются и обрабатываются случайным образом (наиболее вероятный порядок их поступления)
Чтобы проверить, был ли установлен приоритет или нет, мы печатаем JMSMEssage.getPriority () внутри метода onMessage JMS Listener, и он правильно печатает приоритеты (сочетание 20 P9 и 20 P0)
Не может ли пружина DefaultMessageListenerContainer обработать приоритет JMS?
Любые указатели на это будут оценены.
Детали приложения - Weblogic 11g, Java 1.6, Spring 3.0. Все очереди имеют хранилища файлов.