访问包装的 Polly 策略
Access to wrapped Polly policy
如果我封装了一些策略,是否可以从封装的策略中访问它们?
示例:
var handle = Policy.Handle<Exception>();//.OrResult<HttpResponseMessage>(r => r.IsSuccessStatusCode == false);
var timeout = Policy.TimeoutAsync(() => TimeSpan.FromMinutes(5) /*loginConnectorOptions.Timeout*/);
var retry = handle.RetryAsync(retryCount: 3);
var cb = handle.CircuitBreakerAsync(exceptionsAllowedBeforeBreaking: 3, durationOfBreak: TimeSpan.FromMinutes(3));
var bulkhead = Policy.BulkheadAsync(maxParallelization: 4, maxQueuingActions: 20);
_lcPolicy = Policy.WrapAsync(bulkhead, retry, cb, timeout);
_lcPolicy.WithPolicyKey("LoginConnector");
我想访问断路器以获取状态。
Polly 目前没有办法查询已配置的 PolicyWrap
以获取其包含的策略。这可以添加:如果需要,请在 Polly's Github 上将功能请求作为问题提出。
从问题中提供的代码示例来看,您当然在变量 cb
中有断路器。所以现在你可以将 cb
的值传递到你需要的地方,然后访问 cb.CircuitState
.
编辑:Polly v5.6.0 now provides the ability to obtain the policies within a PolicyWrap
natively, using the .GetPolices<>
(and related) methods.
如果我封装了一些策略,是否可以从封装的策略中访问它们?
示例:
var handle = Policy.Handle<Exception>();//.OrResult<HttpResponseMessage>(r => r.IsSuccessStatusCode == false);
var timeout = Policy.TimeoutAsync(() => TimeSpan.FromMinutes(5) /*loginConnectorOptions.Timeout*/);
var retry = handle.RetryAsync(retryCount: 3);
var cb = handle.CircuitBreakerAsync(exceptionsAllowedBeforeBreaking: 3, durationOfBreak: TimeSpan.FromMinutes(3));
var bulkhead = Policy.BulkheadAsync(maxParallelization: 4, maxQueuingActions: 20);
_lcPolicy = Policy.WrapAsync(bulkhead, retry, cb, timeout);
_lcPolicy.WithPolicyKey("LoginConnector");
我想访问断路器以获取状态。
Polly 目前没有办法查询已配置的 PolicyWrap
以获取其包含的策略。这可以添加:如果需要,请在 Polly's Github 上将功能请求作为问题提出。
从问题中提供的代码示例来看,您当然在变量 cb
中有断路器。所以现在你可以将 cb
的值传递到你需要的地方,然后访问 cb.CircuitState
.
编辑:Polly v5.6.0 now provides the ability to obtain the policies within a PolicyWrap
natively, using the .GetPolices<>
(and related) methods.