小编Neg*_*gin的帖子

C# 中的 Polly 模式适用于工作流程?

我有这样的工作流程:

  • 调用API方法
    • 如果抛出任何异常但超时,程序会记录该异常并抛出它。
  • 如果抛出超时,程序必须调用另一个 API 方法。
    • 调用另一个 API 方法后,如果一切正常,程序将返回结果。
    • 否则程序会抛出异常并记录它。

两种 API 方法都具有相同类型的结果。我想通过 Polly 政策来实现这一点。

这是我的示例代码:

var retryPolicy = Policy
    .Handle<HttpRequestException>(ex => ex.StatusCode == HttpStatusCode.RequestTimeout)
    .RetryAsync(1, async (exception, retryCount) =>
        await CallAnotherAPI());

var fallbackPolicy = Policy<HttpResponseMessage>
    .Handle<Exception>()
    .FallbackAsync((r, c, ct) => throw r.Exception,
    async (r, c) =>
    {
        Log(r.Message);
    });

var result = await fallbackPolicy
    .WrapAsync(retryPolicy)
    .ExecuteAsync(async () =>
    {
        await CallAPI();
    });
Run Code Online (Sandbox Code Playgroud)

但它不起作用并且一直执行fallbackPolicy。如何编写如果retryPolicy为true,则不会执行fallbackPolicy的代码?

c# fallback dotnet-httpclient polly retry-logic

5
推荐指数
1
解决办法
973
查看次数

标签 统计

c# ×1

dotnet-httpclient ×1

fallback ×1

polly ×1

retry-logic ×1