2

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

  1. 更新 oracle 数据库中的状态以显示“已批准”
  2. 向外部系统发送 JMS 消息。
  3. 犯罪

一个。那么如果在 (2) 处发送 JMS 失败怎么办?我们如何知道和回滚数据库?湾。如果在 (3) 处提交失败怎么办?我们如何回滚?

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

谢谢总经理

4

2 回答 2

3

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

于 2013-11-08T12:55:24.420 回答
3

您可以使用Spring Transaction Synchronization(Spring Integration 支持)来同步两个事务;正如Dave Syer 博士的 Javaworld 文章中所讨论的,这提供了 Best Effort 1PC 。如果您需要绝对保证,您可能需要使用 XA。

于 2013-08-12T12:58:20.747 回答