使用JMS和DB进行Spring集成和事务处理

时间:2013-08-12 09:50:50

标签: spring spring-integration

我使用spring集成通过JMS将信息发送到其他系统。目前在系统中我们有以下步骤:

  1. 将oracle数据库中的状态更新为“已批准”
  2. 将JMS消息发送到外部系统。
  3. 提交
  4. 一个。那么如果在(2)发送JMS失败怎么办?我们如何知道并回滚数据库? 湾如果在(3)提交失败怎么办?我们如何回滚?

    代码或示例配置示例会有所帮助。

    由于 GM

2 个答案:

答案 0 :(得分:3)

您可以使用Spring Transaction Synchronization(由Spring Integration支持)来同步这两个事务;这提供了Dr. Dave Syer's Javaworld Article中讨论的Best Effort 1PC。如果您需要绝对保证,则可能需要使用XA。

答案 1 :(得分:3)

您也可以使用Spring Data的ChainedTransactionManager for Best Effort 1PC。这和XA一样安全,但你必须处理接收方的重复消息,如果不是两个系统都一致地使用XA,你必须这样做。这个blog post描述了如何使用尽力而为1PC来分离传入和传出的事务处理。