小编pur*_*ika的帖子

Polly 重试不会关闭现有的 HttpClient 调用

我使用 Polly 来处理一些场景,例如请求限制和超时。这些策略直接添加到 Startup.cs 中,如下所示:

var retries = //applying the retries, let say I set to 25 times with 10s delay. Total 250s.

serviceCollection
    .AddHttpClient<IApplicationApi, ApplicationApi>()
    .AddPolicyHandler((services, request) => GetRetryPolicy<ApplicationApi>(retries, services));
Run Code Online (Sandbox Code Playgroud)

政策:

static IAsyncPolicy<HttpResponseMessage> GetRetryPolicy<T>(List<TimeSpan> retries, IServiceProvider services)
{
    return HttpPolicyExtensions
        .HandleTransientHttpError()
        .OrResult(msg => msg.StatusCode == System.Net.HttpStatusCode.TooManyRequests)
        .WaitAndRetryAsync(retries,
            onRetry: (outcome, timespan, retryAttempt, context) =>
            {
                //do some logging
            }
}
Run Code Online (Sandbox Code Playgroud)

在 ApplicationApi.cs 中执行如下操作:

private readonly HttpClient _httpClient;
public ApplicationApi(HttpClient httpClient)
{
    _httpClient = httpClient;
}
       
public void CallApi()
{ 
      var …
Run Code Online (Sandbox Code Playgroud)

.net c# dotnet-httpclient .net-core polly

3
推荐指数
1
解决办法
2043
查看次数

标签 统计

.net ×1

.net-core ×1

c# ×1

dotnet-httpclient ×1

polly ×1