c# - 如果其中一个 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 持久功能是否合适?我可以为此使用任何其他模式吗?
解决方案
正如您回答的那样,API 1、2、3 返回非常快,我假设它们可以并行运行,那么我将简单地使用 Task.WhenAll 并在它们中的任何一个返回异常时执行任何必要的回滚(作为它们发出失败信号的手段)。
可以使用持久功能,但在这种情况下听起来有点矫枉过正。Durable Function 用于更长寿的场景