/// <summary> /// 添加Polly支持 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="feignBuilder"></param> /// <param name="setup"></param> /// <returns></returns> public static T AddPolly <T>(this T feignBuilder, Action <FeignPollyOptions> setup) where T : IFeignBuilder { FeignPollyOptions options = new FeignPollyOptions(); setup?.Invoke(options); return(feignBuilder.AddPolly(options)); }
/// <summary> /// 添加Polly支持 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="feignBuilder"></param> /// <param name="options"></param> /// <returns></returns> public static T AddPolly <T>(this T feignBuilder, FeignPollyOptions options) where T : IFeignBuilder { if (options == null) { options = new FeignPollyOptions(); } feignBuilder.Options.FeignClientPipeline.Initializing += (sender, e) => { IAsyncPolicy asyncPolicy = options.GetAsyncPolicy(e.FeignClient); PollyDelegatingHandler pollyDelegatingHandler = new PollyDelegatingHandler(asyncPolicy, e.HttpClient.Handler.InnerHandler); e.HttpClient.Handler.InnerHandler = pollyDelegatingHandler; }; return(feignBuilder); }