Polly 熔断机制
配置基础在重试机制篇章已经说明,这里不再重复。
基本控制
Policy .Handle<SomeExceptionType>() //SomeExceptionType异常触发 .CircuitBreaker(2, TimeSpan.FromMinutes(1)); //异常触发2次,开启熔断1分钟
执行相关方法
Action<Exception, TimeSpan> onBreak = (exception, timespan) => { //熔断开启前,执行方法 }; Action onReset = () => { //熔断重置(关闭)前,执行方法 }; CircuitBreakerPolicy breaker = Policy .Handle<SomeExceptionType>() .CircuitBreaker(2, TimeSpan.FromMinutes(1), onBreak, onReset);
获取当前熔断状态
CircuitState state = breaker.CircuitState;
/*
CircuitState.Closed - 熔断关闭,允许执行动作。
CircuitState.Open - 熔断开启,执行动作被阻止。
CircuitState.HalfOpen - 自动中断持续时间到期后,从打开状态恢复。 允许执行动作。 后续动作的成功控制着向“打开”或“关闭”状态的转换。
CircuitState.Isolated - 手动开启熔断,执行动作被阻止。
*/
手动开启熔断
breaker.Isolate();
手动重置(关闭)熔断
breaker.Isolate();
高级方法
Policy .Handle<SomeExceptionType>() .AdvancedCircuitBreaker( failureThreshold: 0.5, // 处理器异常发生 >= 50% samplingDuration: TimeSpan.FromSeconds(10), // 上面处理器异常的时间段,10秒内 minimumThroughput: 8, // 在10秒钟内至少进行了8次执行 durationOfBreak: TimeSpan.FromSeconds(30) // 熔断30秒 );
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号