访问包装的 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.