背景:
默認(rèn)情況下父晶,feign通過jdk中的HttpURLConnection向下游服務(wù)發(fā)起http請求(詳見下圖纤垂,源碼詳見feign.Client.Default)逸吵,這種情況下,由于缺乏連接池的支持厢破,在達(dá)到一定流量的后服務(wù)肯定會出問題
方案:
默認(rèn)配置顯然不足以支撐生產(chǎn)環(huán)境的服務(wù)荣瑟,因此我們需要使用更加完備的方案。下面我們以HttpClient作為事例溉奕,來看一下怎樣改變feign的底層http方案
1.pom文件增加feign-httpclient的依賴(請注意與feign-core的版本保持一致)
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>9.4.0</version>
</dependency>
2.application.properties配置激活
feign.httpclient.enabled=true
3.添加HttpClient配置(spring bean),請根據(jù)實際情況配置相關(guān)參數(shù)(例如最大連接數(shù)忍啤、超時時間等)
通過以上3步后加勤,HttpClient即可作為feign的底層http方案,源碼如下圖(詳見:org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration)