如何使用EventBridge做分布式事务?

0

【以下的问题经过翻译处理】 我使用以下场景来解释问题:

我有一个电子商务应用程序,允许客户注册并立即获得在应用程序中使用的优惠券。我想使用EventBridge和其他几个资源,如Microsoft SQL数据库和Lambdas。优惠券是通过第三方API获取的,该API存在于AWS之外。事件流如下:

客户 ---发送Web表单数据--> EventBridge总线 --> Lambda --在SQL数据库中创建客户--从第三方API获取优惠券--发送创建客户成功事件--*-> EventBridge总线

在数据库中创建客户和从第三方API获取优惠券应该在一个事务中完成。由于网络错误或客户提供的任何信息,任何一个都有可能失败。即使客户提供了正确的数据并在SQL数据库中创建了新客户,第三方API调用也可能失败。这两个操作仅在两个操作都成功的情况下才应成功。

EventBridge通过其.NET SDK提供分布式事务吗?在上面的示例中,如果第三方调用失败,则数据库中 创建的用户数据回滚,并向队列发送消息,以便以后可以再次尝试。

我正在寻找类似于Azure中可用的TransactionScope的内容。如果不可用,则如何使用EventBridg来实现分布式事务。

profile picture
专家
已提问 1 年前28 查看次数
1 回答
0

【以下的回答经过翻译处理】 EventBridge中不存在事务范围。每个目标以独立的方式处理其接收到的事件。由于需要它们之间的某些协调,因此建议从EventBridge调用Step Functions状态机。状态机将实现Saga Pattern,以执行操作并在发生故障时回滚。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则