如果 API 调用之一在事务中调用的 API 顺序失败,如何处理错误并恢复事务状态

问题描述

我有以下类型的 3rd 方 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 持久函数是否合适?我可以为此使用任何其他模式吗?

解决方法

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

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