我有这样的工作流程:
两种 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的代码?