2017-08-28 26 views
0

如果我包装了一些政策是否有可能从包装的政策访问它们?访问包装波利政策

例如:

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

我想访问断路器获得进入状态。

回答

1

Polly目前没有办法查询已配置的PolicyWrap以获取它所组成的策略。可以补充说明:如果需要,请将问题提交为Polly's Github上的问题。

从问题中提供的代码示例中,当然您在变量cb中有断路器。因此,现在您可以将cb的值传递到您需要的位置,并访问cb.CircuitState

编辑Polly v5.6.0现在提供本地获得PolicyWrap内政策的能力,使用.GetPolices<> (and related) methods

+0

问题(与进一步讨论)现在存在于波莉github:https://github.com/App-vNext/Polly/issues/312 –

+0

编辑,以突出显示新的波莉功能提供了OP所要求的。 –