我正在将 Polly Circuit Breaker 用于 API,如果服务因维护而停机,则会引发用户定义的异常。Exception 将包含一个值,服务将关闭多长时间。
是否可以在处理第一个用户异常后配置/更新断路器策略?
例如
CircuitBreakerPolicy breaker = Policy.Handle<UserException>()
.CircuitBreaker(
exceptionsAllowedBeforeBreaking: 1,
durationOfBreak: TimeSpan.FromMinutes(1));
Example()
{
try
{
string response = await breaker.ExecuteAsync<String>(() =>
{
return client.GetStringAsync("/api/values/");
});
}
catch (UserException ex)
{
var downtime = GetDowntime(ex);
//how to update the duration of break ?
breaker.durationOfBreak = downtime;
}
catch (Exception ex)
{
…
}
}