【发布时间】:2017-07-11 06:39:52
【问题描述】:
我是 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);
后来我使用 _policy 调用外部 webapi 为:
_policy.Execute(() => SomeWebApiCallMethod<T>());
如果断路器策略与超时策略相结合,我想要实现的是激活回退响应...使用当前设置,它在第一轮工作,即在回退启动后 20 秒内发生 5 个错误...我等待30 sek,现在经过 1 次超过 1500 毫秒的回退再次启动(?)但这还为时过早,因为断路器策略应该在回退开始之前的 20 秒内进行 5 次尝试...如果有人我会很高兴可以指出正确的方向如何解决这个问题。
谢谢!
【问题讨论】:
-
您能否更准确地说明您正在寻求实现的行为,当您声明:“如果断路器策略与超时策略相结合时”激活后备响应?
标签: circuit-breaker polly