我有一个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。所有队列都有文件存储。