sha*_*thb 2 jms distributed-transactions spring-integration
我正在研究POC,其中包括以下内容
现在,如果消息的DB插入失败,我希望JMS消息返回到队列,以便以后可以重新尝试.
使用我的以下配置它似乎不起作用.(即使插入数据库时出现故障,消息将从队列中删除.
任何指针或示例配置都会有所帮助.
<integration:channel id="jmsInChannel">
<integration:queue/>
</integration:channel>
<int-jms:message-driven-channel-adapter id="jmsIn"
transaction-manager="transactionManager"
connection-factory="sConnectionFactory"
destination-name="emsQueue"
acknowledge="client" channel="jmsInChannel"
extract-payload="false"/>
<integration:service-activator input-channel="jmsInChannel"
output-channel="fileNamesChannel" ref="handler" method="process" />
<bean id="handler" class="com.irebalpoc.integration.MessageProcessor">
<property name="jobHashTable" ref="jobsMapping" />
</bean>
Run Code Online (Sandbox Code Playgroud)
设置acknowledge ="transacted",我假设transactionManager是一个JDBC(或JTA)事务管理器.
您还需要从JmsInChannel中删除<queue />,以便数据库事务在同一个线程上发生.
Spring将使数据库事务与JMS事务同步.
但是,请阅读http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html了解其含义.
如果您无法使服务具有幂等性,则可能需要查看XA事务管理器.
| 归档时间: |
|
| 查看次数: |
3697 次 |
| 最近记录: |