首页 > 解决方案 > 如果其中一个 API 调用在事务中调用的 API 序列中失败,如何处理错误并恢复事务状态

问题描述

我有以下类型的第 3 方 API 要在 c# 代码中按顺序调用。

try
{
    transaction:
    {
        call API 1;
        call API 2
        call API 3
    }

}
Catch
{
    transaction rollback:
    rollback API 4;
    rollback API 5;
}

我应该如何在 Azure 函数 http 触发器中处理这个问题?SAGA 或 2 阶段提交是否适合这里?Azure 持久功能是否合适?我可以为此使用任何其他模式吗?

标签: c#microservicessagaazure-durable-functions2phase-commit

解决方案


正如您回答的那样,API 1、2、3 返回非常快,我假设它们可以并行运行,那么我将简单地使用 Task.WhenAll 并在它们中的任何一个返回异常时执行任何必要的回滚(作为它们发出失败信号的手段)。

可以使用持久功能,但在这种情况下听起来有点矫枉过正。Durable Function 用于更长寿的场景


推荐阅读