.net core polly (二) 代码本质
polly代码上 本质是 各种策略 进行 串联 而且还是有顺序的串联
例如 我要降级后重试3次进行断路
顺序
总策略 = 降级 --->重试---->断路
然后执行 总策略 如果总策略 异常
执行 降级策略
#region var 空策略 = Policy.NoOpAsync(); //exceptionsAllowedBeforeBreaking 允许3次重试失败 开启断路 TimeSpan.FromSeconds(2) 熔断时间 断路后2秒后 开启断路器 var 断路策略 = Policy.Handle<Exception>().CircuitBreakerAsync(exceptionsAllowedBeforeBreaking: 3, TimeSpan.FromSeconds(2), //打开断路器 onBreak: (ex, ts) => { Console.WriteLine("打开断路器"); }, //关闭断路器 onReset: () => { Console.WriteLine("关闭断路器"); }, //半开 onHalfOpen: () => { Console.WriteLine("半开断路器"); } ); var 降级策略 = Policy.Handle<Exception>().FallbackAsync((token) => { Console.WriteLine("开始执行降级方法"); return Task.CompletedTask; }); var 重试策略 = Policy.Handle<Exception>().RetryAsync(4); var reuslt = 空策略.WrapAsync(降级策略).WrapAsync(重试策略).WrapAsync(断路策略); await reuslt.ExecuteAsync(() => { Console.WriteLine("正常开始业务逻辑"); throw new Exception("错误"); }); await 降级策略.ExecuteAsync( () => { Console.WriteLine("降级方法开始"); return Task.CompletedTask; }); #endregion
浙公网安备 33010602011771号