我正在使用 spring 集成通过 JMS 将信息发送到其他系统。目前在系统中我们有以下步骤:
- 更新 oracle 数据库中的状态以显示“已批准”
- 向外部系统发送 JMS 消息。
- 犯罪
一个。那么如果在 (2) 处发送 JMS 失败怎么办?我们如何知道和回滚数据库?湾。如果在 (3) 处提交失败怎么办?我们如何回滚?
代码或示例配置示例会有所帮助。
谢谢总经理
我正在使用 spring 集成通过 JMS 将信息发送到其他系统。目前在系统中我们有以下步骤:
一个。那么如果在 (2) 处发送 JMS 失败怎么办?我们如何知道和回滚数据库?湾。如果在 (3) 处提交失败怎么办?我们如何回滚?
代码或示例配置示例会有所帮助。
谢谢总经理
您也可以使用 Spring Data 的 ChainedTransactionManager for Best Effort 1PC。这与 XA 一样安全,但是您必须在接收方处理重复的消息,如果不是两个系统都一致地使用 XA,您无论如何都必须这样做。这篇博文描述了如何使用尽力而为 1PC 来分离传入和传出事务处理。
您可以使用Spring Transaction Synchronization(Spring Integration 支持)来同步两个事务;正如Dave Syer 博士的 Javaworld 文章中所讨论的,这提供了 Best Effort 1PC 。如果您需要绝对保证,您可能需要使用 XA。