1

如果我包装了一些策略,是否可以从包装的策略中访问它们?

例子:

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");

我想访问断路器以访问状态。

4

1 回答 1

2

目前在 Polly 中没有一种方法可以询问配置PolicyWrap为获取它所包含的策略。这可以添加:如果需要,请在Polly 的 Github上提出功能请求作为问题。

从问题中提供的代码示例中,您当然在变量中有断路器cb。所以现在你可以将 的值传递cb到你需要的地方,然后访问cb.CircuitState.

编辑Polly v5.6.0PolicyWrap现在提供了使用.GetPolices<>(和相关)方法在本地获取策略的能力。

于 2017-08-28T16:08:28.737 回答