我有一個JMS客戶端,它正在向具有優先級的Weblogic隊列發送消息。爲了讓事情變得簡單,我們設置了兩個優先級0 & 9.Spring MDP不遵循JMS優先級
在服務器端,我們在該隊列上部署了一個Spring應用程序(帶有Spring MDP-消息驅動的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 - 是實現Message偵聽器並具有onMessage方法的類。
測試:停止應用程序併發送40個優先級爲0和20的請求20,優先級爲9.啓動應用程序。
預期結果是MDP應該選擇並優先處理優先級爲9的消息,然後是優先級爲0的消息。
在現實中消息被挑選和處理隨機的(最有可能的順序,他們進來)
要或檢查的優先級設置不是我們打印JMSMEssage.getPriority()JMS偵聽器的onMessage方法內,它會正確打印優先級(混合20 P9和20 P0)
Spring DefaultMessageListenerContainer是否無法處理JMS優先級?
任何指針,將不勝感激。
應用詳細信息 - Weblogic 11g,Java 1.6,Spring 3.0。所有隊列都有文件存儲。