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