您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關HttpComponents中如何使用HttpClient連接池,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
對于 httpclient 連接池使用一般考慮以下幾點:
向連接池申請連接的超時時間
連接建立的超時時間,即 socket 進行 3 次握手建立連接的超時時間
連接超時時間,即 socket 讀寫超時時間
設置最大 redirect 次數
是否開啟可用性檢查
global 連接池中最大的連接數
individual route 連接池中最大的連接數
請求重試次數
設置ssl 請求的證書 trust 策略和 cn host name 驗證策略
開啟對于空閑連接以及過期連接的清理,設置空閑連接的時長
是否重用池化對象以及使用長連接
我們通過如下代碼設置上述 items :
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(10000)//設置連接池申請連接的超時時間,默認-1為無限時間
.setConnectTimeout(5000)//設置socket進行3次握手建立連接的超時時間
.setSocketTimeout(8000)//設置連接超時時間,即socket讀寫超時時間
.setMaxRedirects(50)//設置最大的redirect次數,默認為50
.setStaleConnectionCheckEnabled(Boolean.TRUE)//設置開啟可用性檢查,默認不開啟
.build();
CloseableHttpClient htttpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setMaxConnPerRoute(50)//設置individual route連接池中最大的連接數,默認為2
.setMaxConnTotal(500)//設置global連接池中最大的連接數,默認為20
.setConnectionTimeToLive(-1, TimeUnit.MICROSECONDS)//設置連接池中連接存活時間,默認-1代表無限存活,連接使用之后由response header "Keep-Alive: timeout"決定。
.evictIdleConnections(60000, TimeUnit.MILLISECONDS)//開啟空襲連接清理線程,設置連接池中連接最大空閑時間,以及連接清理線程的sleep時間,默認為10秒
.evictExpiredConnections()//開啟過期連接清理線程,過期時間默認為-1,連接使用后由response header "Keep-Alive: timeout"決定。
//.setRetryHandler(retryHandler)//設置重試策略,默認3次重試
//.setSSLContext(sslContext)//設置ssl請求上下文
//.setSSLHostnameVerifier(hostnameVerifier)//設置ssl證書cn host name驗證策略,默認為驗證cn host name
.build();
看完上述內容,你們對HttpComponents中如何使用HttpClient連接池有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。