日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core 3.0深入源码理解HttpClientFactory之实战

發(fā)布時(shí)間:2023/12/4 asp.net 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 3.0深入源码理解HttpClientFactory之实战 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

寫在前面

前面兩篇文章透過源碼角度,理解了HttpClientFactory的內(nèi)部實(shí)現(xiàn),當(dāng)我們?cè)陧?xiàng)目中使用時(shí),總會(huì)涉及以下幾個(gè)問題:

  • HttpClient超時(shí)處理以及重試機(jī)制

  • HttpClient熔斷器模式的實(shí)現(xiàn)

  • HttpClient日志記錄與追蹤鏈

接下來我們將從使用角度對(duì)上述問題作出說明。

詳細(xì)介紹

以下代碼參考了MSDN,因?yàn)榇a里展示的GitHub接口確實(shí)可以調(diào)通,省的我再寫一個(gè)接口出來測(cè)試了。

HttpClient超時(shí)處理和重試機(jī)制

在此之前,我們需要了解一下Polly這個(gè)庫,Polly是一款基于.NET的彈性及瞬間錯(cuò)誤處理庫, 它允許開發(fā)人員以順暢及線程安全的方式執(zhí)行重試(Retry),斷路器(Circuit),超時(shí)(Timeout),隔板隔離(Bulkhead Isolation)及后背策略(Fallback)。

以下代碼描述了在.NET Core 3.0中如何使用超時(shí)機(jī)制。

那么如何將其注冊(cè)到對(duì)應(yīng)的HttpClient實(shí)例呢,有很多種方式:

  • 通過AddPolicyHandler注冊(cè)

  • 聲明Policy注冊(cè)對(duì)象,并將超時(shí)策略對(duì)象添加進(jìn)去

調(diào)用方式

Polly重試也很簡(jiǎn)單


這里的重試設(shè)置是在第一次調(diào)用失敗后,還會(huì)有三次機(jī)會(huì)繼續(xù)重試,每個(gè)請(qǐng)求的時(shí)間間隔是指數(shù)級(jí)延遲。

重試功能除了可以使用Polly實(shí)現(xiàn)外,還可以使用DelegatingHandler,DelegatingHandler繼承自HttpMessageHandler,用于”處理請(qǐng)求、響應(yīng)回復(fù)“,本質(zhì)上就是一組HttpMessageHandler的有序組合,可以視為是一個(gè)“雙向管道”。

此處主要展示DelegatingHandler的使用方式,在實(shí)際使用中,仍然建議使用Polly重試。

注冊(cè)方式如下:

HttpClient熔斷器模式的實(shí)現(xiàn)

如果非常了解Polly庫的使用,那么熔斷器模式的實(shí)現(xiàn)也會(huì)非常簡(jiǎn)單,

這里的熔斷器設(shè)置規(guī)則是在連續(xù)10次請(qǐng)求失敗后,會(huì)暫停30秒。這個(gè)地方可以寫個(gè)擴(kuò)展方法注冊(cè)到IServiceCollection中。

HttpClient日志記錄與追蹤鏈

日志記錄這塊與追蹤鏈,我們一般會(huì)通過request.Header實(shí)現(xiàn),而在微服務(wù)中,十分關(guān)注相關(guān)調(diào)用方的信息及其獲取,一般的做法是通過增加請(qǐng)求Id的方式來確定請(qǐng)求及其相關(guān)日志信息。

實(shí)現(xiàn)思路是增加一個(gè)DelegatingHandler實(shí)例,用以記錄相關(guān)的日志以及請(qǐng)求鏈路

我在查找相關(guān)資料的時(shí)候,發(fā)現(xiàn)有個(gè)老外使用CorrelationId組件實(shí)現(xiàn),作為一種實(shí)現(xiàn)方式,我決定要展示一下,供大家選擇:

參考鏈接:

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-3.0

https://rehansaeed.com/optimally-configuring-asp-net-core-httpclientfactory/

總結(jié)

以上是生活随笔為你收集整理的.NET Core 3.0深入源码理解HttpClientFactory之实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。