高並發Web服務、頻繁API調用、分布式系統通訊等情境,使用HTTP串連池減少延遲,最佳化資源,提高響應速度和系統穩定性。本文為您介紹Java(非同步)SDK對於HTTP串連池的配置。
在SDK中,所有非同步HTTP請求均由PoolingAsyncClientConnectionManager統一管理,其預設的串連池參數配置如下:
配置參數 | 說明 |
maxConnections | 串連池大小,預設值128。 |
maxConnectionsPerRoute | 設定每路由最大串連數,預設值128。 |
maxIdleTimeOut | 設定串連在串連池中的最大空閑時間,預設30000毫秒。 |
keepAlive | 串連的空閑存活時間,預設值20000毫秒。 |
connectRequestTimeout | 擷取串連的逾時時間,預設值30000毫秒。 |
如上述預設配置不符合您的業務情境,您可以重新設定相關參數以調整串連池設定。例如,在高並發情境下,可以適當提高maxConnections、maxConnectionsPerRoute及connectRequestTimeout的值。
範例程式碼如下:
HttpClient httpClient = new ApacheAsyncHttpClientBuilder()
.maxConnections(10) // 設定串連池大小,預設值128。
.maxConnectionsPerRoute(10) // 設定每路由最大串連數,預設值128。
.maxIdleTimeOut(Duration.ofMillis(20000)) // 設定串連在串連池中的最大空閑時間,預設30000毫秒。
.keepAlive(Duration.ofMillis(5000)) // 串連的空閑存活時間,預設值20000毫秒。
.connectRequestTimeout(Duration.ofMillis(5000)) // 擷取串連的逾時時間,預設值30000毫秒。
.build();
AsyncClient client = AsyncClient.builder()
.httpClient(httpClient)
.credentialsProvider(credentialProvider) // 本樣本省略credentialProvider實現過程...
.build();