我是Polly的新手,正在尝试创建一个具有回退和超时策略的断路器。
_timeoutPolicy =
Policy.Timeout(TimeSpan.FromMilliseconds(1500),TimeoutStrategy.Pessimistic);
_circuitBreaker = Policy.Handle<Exception>()
.AdvancedCircuitBreaker(
failureThreshold:0.5,
samplingDuration: TimeSpan.FromSeconds(20),
minimumThroughput: 5,
durationOfBreak: TimeSpan.FromSeconds(30)
);
_policy = Policy<ServiceResponse<T>>
.Handle<Exception>()
.Fallback(() => new ServiceResponse<T>()
{
IsValid = false,
Message = "Tjänsten fungerar inte"
}).Wrap(_circuitBreaker).Wrap(_timeoutPolicy);
稍后,我使用_策略调用外部webapi作为:
_policy.Execute(() => SomeWebApiCallMethod<T>());
我想要实现的是,如果断路器策略与超时策略相结合,则激活回退响应……在当前设置下,它在第一轮工作,即回退开始后20秒内发生5个错误……我等待30 sek,现在只需1次尝试,即超过1500毫秒,回退再次开始(?)但这还为时过早,因为断路器策略应该在20秒内进行5次尝试,然后回退开始……如果有人能为我指出解决这个问题的正确方向,我会很高兴。
谢谢