湖州住房和城乡建设部网站,工作室网站建设方案模板,精准到可怕的2022楼市预言,手机如何制作软件app前言在2.1之后#xff0c;有不少新东西#xff0c;其中HttpClientFactory算是一个。HttpClientFactory涉及的东西也不算少#xff0c;三四种clients , 请求中间件#xff0c;与Polly的结合#xff0c;生命周期等。Steeltoe的组件升级到2.1后#xff0c;不少示例代码已经使… 前言在2.1之后有不少新东西其中HttpClientFactory算是一个。HttpClientFactory涉及的东西也不算少三四种clients , 请求中间件与Polly的结合生命周期等。Steeltoe的组件升级到2.1后不少示例代码已经使用HttpClientFactory了。当然这是个题外话。这里主要讲的是与Polly的结合来完成简单的熔断降级。在这之前还是先看看关于HttpClientFactory最简单的用法。HttpClientFactory的简单使用用个简单的控制台程序来演示这里就只是获取一下状态码没有获取实际的内容。其实主要的操作就是AddHttpClient然后通过HttpClientFactory创建一个HttpClient对象有了HttpClient对象下面的操作应该就不用多说了。然后在Main方法调用Console.WriteLine($BasicUsage, StatusCode {BasicUsage().GetAwaiter().GetResult()});用法感觉并没有太多的差别。下面来看看与Polly的结合。HttpClientFactory和Polly的结合Polly的wiki页面已经有了这两者结合使用的文档了。https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory其实现在对于我们来说要想对http请求使用Polly的一些特性已经非常的简单了。我们在使用的时候要添加Microsoft.Extensions.Http.Polly的Nuget包。先来看看使用Polly的三种扩展方法扩展方法说明AddTransientHttpErrorPolicy主要是处理Http请求的错误如HTTP 5XX 的状态码HTTP 408 的状态码 以及System.Net.Http.HttpRequestException异常。AddPolicyHandler自定义和传统定义Polly的方式保持一致AddPolicyHandlerFromRegistry从Policy集合(也是自定义的)里面选择自己想要的。后面的操作是用的AddPolicyHandler。由于我们要实现熔断降级所以我们必不可少的要用到CircuitBreakerPolicy和FallbackPolicy同时为了方便演示再加个TimeoutPolicy。由于涉及到多个Policy所以我们必须要确定他们的执行顺序Polly的wiki页面有个示例还配了一幅很详细的时序图。一句话来说就是最先起作用的还是最后添加的那个。下面就新建一个API项目用来演示一下。修改ConfigureServices方法具体如下然后是在控制器去使用。效果如下前面几次请求会因为超时或熔断从而我们得到的结果是fallback。过了4秒钟后再请求由于没有超时正常拿到了结果所以熔断器会被reset。来看看日志比较清晰的看到了所有的操作。总结总体来说HttpClientFactory还是很不错的。尤其是它可以直接使用Polly相关的特性。部分示例代码https://github.com/catcherwong/Demos/tree/master/src/HttpClientFactoryDemo原文地址https://www.cnblogs.com/catcher1994/p/9349618.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com