您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了如何將HttpClientFactory與Steeltoe結(jié)合來完成服務(wù)發(fā)現(xiàn)的相關(guān)知識點,內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學(xué)習(xí)“如何將HttpClientFactory與Steeltoe結(jié)合來完成服務(wù)發(fā)現(xiàn)”的知識吧。
用HttpClientFactory實現(xiàn)了簡單的熔斷降級。
下面就來簡單說說用HttpClientFactory來實現(xiàn)服務(wù)發(fā)現(xiàn)。由于標(biāo)題已經(jīng)好明顯的說了Steeltoe
因此這里會要求有Spring Clound的相關(guān)環(huán)境,也默認(rèn)各位對這里有些許了解,所以不會涉及搭建過程的。
下面就開始正文了。
這里的Service,其實可以比較簡單的理解成對注冊到Eureka的服務(wù)進(jìn)行調(diào)用,然后進(jìn)行后續(xù)處理。
在上面的Service中,都是常規(guī)的不能再常規(guī)的HttpClient的用法!似乎也沒有看到任何和服務(wù)發(fā)現(xiàn)相關(guān)的東西呀。
確實,就上面的代碼,完成不了服務(wù)發(fā)現(xiàn),因為我們的主角,HttpClientFactory還沒有出場!
先定義好這個Service,是因為我們這里要用另一種client方式(Typed Client)。
下面就去Startup進(jìn)行相關(guān)的配置了。
在進(jìn)行配置之前,我們要先添加Steeltoe.Discovery.ClientCore的引用。
<PackageReference Include="Steeltoe.Discovery.ClientCore" Version="2.1.0-rc1" />
再按照Steeltoe的配置說明,在appsettings.json
中添加下面的配置
最后就是在ConfigureServices
方法里面進(jìn)行操作了。
這里注冊HttpClient,涉及到了兩個點。一個是Typed Client,另一個是outgoing request middleware。
Typed Client 主要是AddTypedClient<IMyService, MyService>()
,表明注冊的這個HttpClient是給這個類型用的。
DiscoveryHttpMessageHandler表明,使用這個HttpClient的時候,會使用這個Handler.
另外,這里指定的BaseAddress是http://bservicetest/api/values/。
這個是已經(jīng)注冊到Eureka的另外一個測試服務(wù),我們就是要發(fā)現(xiàn)它,然后從這個服務(wù)里面取到結(jié)果。
然后,自然就是控制器了。
Controller就是很簡單的了,不需要多說。
這里還加了一個日志,是為了方便發(fā)布后查看日志,所以添加了NLog來輸出日志。
添加一個nlog.config
,內(nèi)容大致如下。
然后在Program
添一行使用NLog的代碼。
發(fā)布之后,可以看到Eureka上面已經(jīng)成功注冊了我們的這個ClientTest服務(wù)
其中,上圖兩個箭頭的地方就是我們用到的服務(wù),CLIENTTEST就是我們剛才發(fā)布的。BSERVICETEST是另一個測試服務(wù)。
CLIENTTEST就是會調(diào)用BSERVICETEST這個測試服務(wù)拿數(shù)據(jù)。
下面請求看看效果。
從動圖來看,是已經(jīng)達(dá)到預(yù)期了,由于BSERVICETEST有兩個實例,所以也可以看到上面的結(jié)果是,兩個實例在隨機(jī)返回結(jié)果。
最后看看日志
請求也確實是到了我們的BSERVICETEST,而不是直接通過這個service的直接地址去訪問的。
關(guān)于“如何將HttpClientFactory與Steeltoe結(jié)合來完成服務(wù)發(fā)現(xiàn)”就介紹到這了,更多相關(guān)內(nèi)容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網(wǎng)站!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。