小编use*_*214的帖子

使用 Polly 断路器处理多项服务的正确方法

我有一个应用程序,我们可以在其中与数百个 HTTP 端点进行通信。该应用程序是某种代理。

在使用 polly 进行测试时,我注意到如果一个端点(比如api.endpoint1.com失败),对api.endpoint2.com和 的调用api.endpoint3.com也将处于打开/阻止状态。

这是有道理的,因为我只定义了一个策略,但是处理这种情况的推荐方法是什么,以便对不相关端点的调用不会因另一个端点出现性能问题而被阻止?

我是否创建一组策略,每个端点一个,或者是否有一种方法提供某种上下文键(即主机名)来将故障范围限制到给定的主机端点?

我已经查看了Polly 的有关上下文键的文档,看来这些是一种来回交换数据的方法,而不是我在这里寻找的。

var policy = Policy
            .Handle<TimeoutException>()
            .CircuitBreaker(1, TimeSpan.FromSeconds(1));
                
//dynamic, large list of endpoints. 
var m = new HttpRequestMessage(HttpMethod.Post, "https://api.endpoint1.com")
{
    Content = new StringContent("some JSON data here", Encoding.UTF8,"application/json")
};


policy.Execute(() => HTTPClientWrapper.PostAsync(message));
Run Code Online (Sandbox Code Playgroud)

.net c# circuit-breaker dotnet-httpclient polly

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

标签 统计

.net ×1

c# ×1

circuit-breaker ×1

dotnet-httpclient ×1

polly ×1