私のアプリ (Spring メッセージ リスナー) は、1 つのトランザクションでキューから読み取り、データベースに書き込みます。Atomikos を使用して、XA トランザクション動作を提供します。たとえば、kill ステートメントでアプリが突然終了すると、メッセージが失われます。使用する必要がある特定の構成はありますか? キューは永続的である必要がありますか? 現在、キューは非永続的です。私の MQ バージョンは v7.1 です。
リスナー コンテナーの Spring 構成は次のようになります。
<bean id="listenerContainer" class="com.miax.test.TestListenerMDPImpl" autowire="byName">
<property name="connectionFactory" ref="mqConnFactory" />
<property name="destinationName" value="QUEUE" />
<property name="messageListener" ref="listenerAdapter" />
<property name="transactionManager" ref="jtaTransactionManager" />
<property name="sessionTransacted" value="true" />
<property name="concurrentConsumers" value="1" />
<!-- receive time out, should be less than tranaction time out -->
<property name="receiveTimeout" value="3000" />
<!-- retry connection every 1 seconds -->
<property name="recoveryInterval" value="1000" />
<property name="autoStartup" value="true" />
<property name="sessionAcknowledgeMode" value="0" />
</bean>
その他の情報は、必要に応じて提供されます。
ありがとう。