小编csk*_*csk的帖子

Polly 使用不同的 url 重试

我正在尝试使用 polly 创建一个解决方案,其中我请求其他 api。
我有同一服务的多个实例的 URL 列表。
我希望当第一个请求失败时,另一个请求应该自动从我的列表中的下一个网址开始。

这是一个示例,我使用两个静态地址尝试此行为。
此解决方案的问题是,在我开始下一个请求之前,url 不会更改。我希望每次重试时网址都会改变

 public static void ConfigureUserServiceClient(this IServiceCollection services)
    {

        _userServiceUri = new Uri("https://localhost:5001");

        services.AddHttpClient("someService", client =>
        {
            client.BaseAddress = _userServiceUri;
            client.DefaultRequestHeaders.Add("Accept", "application/json");
        }).AddPolicyHandler(retryPolicy());
    }

    private static IAsyncPolicy<HttpResponseMessage> retryPolicy()
    {
        return Policy.HandleResult<HttpResponseMessage>(r => r.StatusCode == HttpStatusCode.RequestTimeout)
            .WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(retryAttempt),
            onRetry: (result, span, ctx) =>
            {
                _userServiceUri = new Uri("https://localhost:5002");
            });
    }
Run Code Online (Sandbox Code Playgroud)

c# dotnet-httpclient polly asp.net-core retry-logic

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

标签 统计

asp.net-core ×1

c# ×1

dotnet-httpclient ×1

polly ×1

retry-logic ×1