Spring MDP не соответствует приоритету JMS - PullRequest
0 голосов
/ 26 марта 2012

У меня есть клиент 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. Все очереди имеют хранилища файлов.

1 Ответ

0 голосов
/ 27 марта 2012

Глупый я, я не настроил ключи назначения для сортировки.

Если кто-то придет в этот поток, делая то же самое, что и я, прочитайте это: Вот как это сделать В Консоли администрирования перейдитек ресурсу ключа назначения, который вы хотите настроить: Перейдите к ресурсам JMS в системных модулях. Перейдите к ресурсам JMS в модуле приложения. На вкладке Конфигурация> Общие: o В разделе Ключ сортировки выберите имя ключа сортировки сообщения или имя сообщения.поле заголовка для сортировки.(Ключ сортировки - ключ сортировки сообщения или имя поля заголовка сообщения, по которому производится сортировка. Ключи поля заголовка сообщения начинаются с букв JMS и игнорируют настройку типа ключа. Атрибут: свойство, которое должно быть установлено в: JMSPriority

И это работает !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...