我正在使用 Spring 3.0 - DefaultMessageListenerContainer 连接到 Websphere 6 MQ。MQ 上已经存在一些消息。当我运行测试时,会启动实现 SessionAwareMessageListener 的侦听器。但是 onMessage() 没有被调用。所以问题是已经在队列中的消息没有被读取。
根据文档, autoStartup 默认为 true(我没有更改此设置)。根据我的理解,在启动时,侦听器应该读取队列中的任何现有消息,并且应该调用 onMessage()。如果这种理解是错误的,请告诉我。
这是配置文件中的片段:
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsQueueConnectionFactory" />
<property name="destinationName">
<value>${queue}</value>
</property>
<property name="messageListener" ref="exampleMessageListener" />
<property name="concurrentConsumers" value="1" />
<property name="maxConcurrentConsumers" value="1" />
<property name="idleTaskExecutionLimit" value="4" />
<property name="maxMessagesPerTask" value="4" />
<property name="receiveTimeout" value="5000" />
<property name="recoveryInterval" value="5000" />
<property name="sessionTransacted" value="true" />
<property name="transactionManager" ref="jmsTransActionManager" />
</bean>
注意:没有错误/异常,测试应用程序启动正常。
任何解决此问题的指针都会有很大帮助。
谢谢,
RJ