我的应用程序(一个弹簧消息侦听器)从队列中读取,并在单个事务中写入数据库。 我用Atomikos公司提供XA交易行为。 当应用程序突然与例如杀语句结束,我看到的消息都将丢失。 有没有具体的配置我需要使用? 如果队列是永久的? 目前,队列的非持久性。 我的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>
根据需要任何其他信息将给予。
谢谢。