将多个命令作为事务处理

问题描述 投票:0回答:1

我目前正在开发支付系统,执行支付并写入该项目是在云托管数据库Azure中购买的。

它目前的工作原理是:

  1. 与第三方支付系统交易
  2. 如果成功,则为用户添加数据库中的新订阅行
  3. 事务历史和其他相关内容写入数据库

但是,在不太可能的情况下:

  1. 交易成功(http支付网关返回成功)
  2. 由于某种原因,插入数据库失败

我将最终得到用户已经为该项目付款而没有该项目的实际订阅。(因为该行不在我们的数据库中)

这两个调用与数据库无关(一个是,另一个是简单的异步http请求)所以我不能将它们视为事务(因为我无法真正回滚)。

所以我的问题是更有经验的如何处理这种情况?

database payment
1个回答
0
投票

为了回答,我使用补偿交易模式实现了这一点。

按预期工作

© www.soinside.com 2019 - 2024. All rights reserved.