HttpClient實戰三:Spring整合HttpClient連接池


簡介

在微服務架構或者REST API項目中,使用Spring管理Bean是很常見的,在項目中HttpClient使用的一種最常見方式就是:使用Spring容器XML配置方式代替Java編碼方式進行HttpClient連接池的管理,然后將HttpClient的doGet()和doPost()等操作封裝成工具類或者Service注入到其他服務中進行調用。

Spring集成HttpClient過程

首先創建一個使用Spring的web項目,在Resources資源文件中添加springContext-httpclient.xml文件

 
springContext-httpclient.xml

然后,創建屬性文件httpclient.properties

httpclient.properties
http.maxTotal=200
http.defaultMaxPerRoute=20
http.connectTimeout=1000
http.connectionRequestTimeout=500
http.socketTimeout=10000
http.staleConnectionCheckEnabled=true

最后,在啟動Spring容器時,加載屬性文件和springContext-httpclient.xml配置文件即可。

 
 

springContext-httpclient.xml配置文件解析

1. 創建連接池管理器對象,並設置最大連接數和每個主機地址並發數,下圖所示配置bean的id=httpClientConnectionManager,即對應使用Java代碼創建的對象cm。

創建連接池管理器bean

2.創建HttpClient對象並配置請求參數
HttpClient接口和CloseableHttpClient實現類層次結構

 

HttpClients源碼中使用custom()方法構建HttpClientBuilder對象

HttpClients源碼

HttpClientBuilder實現在build()方法獲取HttpClient對象,先從連接池中獲取,如果連接池為空就進行一系列默認的配置並創建連接池對象;如果連接池不為空,就判斷連接的可重用性,獲取有效連接。HttpClientBuilder部分源碼如下:

 
HttpClientBuilder部分源碼

創建httpClientBuilder的過程如下:

 
image.png

請求參數RequestConfig的配置如下:

 
請求參數RequestConfig

3.開啟線程定時清理無效連接

 
image.png

總結

Spring整合HttpClient連接池的過程很簡單,其實就是將《HttpClient實戰二》中使用Java代碼方式實現的HttpClient連接池方式,修改成Spring容器管理Bean的方式,這樣就不必每次都創建一個信息連接池對象,而是從Spring容器中注入即可。


轉自:https://www.jianshu.com/p/363e3d7c235b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM