网站短期电脑培训班学费,桂林人论坛爆料,网站建设合同图表版,乐清建网站哪家好写在前面前面两篇文章透过源码角度#xff0c;理解了HttpClientFactory的内部实现#xff0c;当我们在项目中使用时#xff0c;总会涉及以下几个问题#xff1a;HttpClient超时处理以及重试机制HttpClient熔断器模式的实现HttpClient日志记录与追踪链接下来我们将从使用角度… 写在前面前面两篇文章透过源码角度理解了HttpClientFactory的内部实现当我们在项目中使用时总会涉及以下几个问题HttpClient超时处理以及重试机制HttpClient熔断器模式的实现HttpClient日志记录与追踪链接下来我们将从使用角度对上述问题作出说明。详细介绍以下代码参考了MSDN因为代码里展示的GitHub接口确实可以调通省的我再写一个接口出来测试了。HttpClient超时处理和重试机制在此之前我们需要了解一下Polly这个库Polly是一款基于.NET的弹性及瞬间错误处理库, 它允许开发人员以顺畅及线程安全的方式执行重试(Retry)断路器(Circuit)超时(Timeout)隔板隔离(Bulkhead Isolation)及后背策略(Fallback)。以下代码描述了在.NET Core 3.0中如何使用超时机制。那么如何将其注册到对应的HttpClient实例呢有很多种方式通过AddPolicyHandler注册声明Policy注册对象并将超时策略对象添加进去调用方式Polly重试也很简单这里的重试设置是在第一次调用失败后还会有三次机会继续重试每个请求的时间间隔是指数级延迟。重试功能除了可以使用Polly实现外还可以使用DelegatingHandlerDelegatingHandler继承自HttpMessageHandler用于”处理请求、响应回复“本质上就是一组HttpMessageHandler的有序组合可以视为是一个“双向管道”。此处主要展示DelegatingHandler的使用方式在实际使用中仍然建议使用Polly重试。注册方式如下HttpClient熔断器模式的实现如果非常了解Polly库的使用那么熔断器模式的实现也会非常简单这里的熔断器设置规则是在连续10次请求失败后会暂停30秒。这个地方可以写个扩展方法注册到IServiceCollection中。HttpClient日志记录与追踪链日志记录这块与追踪链我们一般会通过request.Header实现而在微服务中十分关注相关调用方的信息及其获取一般的做法是通过增加请求Id的方式来确定请求及其相关日志信息。实现思路是增加一个DelegatingHandler实例用以记录相关的日志以及请求链路我在查找相关资料的时候发现有个老外使用CorrelationId组件实现作为一种实现方式我决定要展示一下供大家选择参考链接https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?viewaspnetcore-3.0https://rehansaeed.com/optimally-configuring-asp-net-core-httpclientfactory/