1414import org .apache .hc .client5 .http .impl .auth .CredentialsProviderBuilder ;
1515import org .apache .hc .client5 .http .impl .classic .CloseableHttpClient ;
1616import org .apache .hc .client5 .http .impl .classic .HttpClientBuilder ;
17+ import org .apache .hc .client5 .http .impl .io .PoolingHttpClientConnectionManagerBuilder ;
1718import org .apache .hc .client5 .http .protocol .HttpClientContext ;
1819import org .apache .hc .core5 .http .ClassicHttpResponse ;
1920import org .apache .hc .core5 .http .ContentType ;
@@ -60,16 +61,26 @@ public class HttpAPIClientHelper {
6061 public HttpAPIClientHelper (Map <String , String > configuration ) {
6162 this .chConfiguration = configuration ;
6263 this .httpClient = createHttpClient ();
63- this .baseRequestConfig = RequestConfig .custom ()
64- .setConnectionRequestTimeout (1000 , TimeUnit .MILLISECONDS )
65- .build ();
64+
65+ RequestConfig .Builder reqConfBuilder = RequestConfig .custom ();
66+ MapUtils .applyLong (chConfiguration , ClickHouseClientOption .CONNECTION_TIMEOUT .getKey (),
67+ (t ) -> reqConfBuilder .setConnectionRequestTimeout (t , TimeUnit .MILLISECONDS ));
68+
69+ this .baseRequestConfig = reqConfBuilder .build ();
6670 }
6771
6872 public CloseableHttpClient createHttpClient () {
6973 HttpClientBuilder clientBuilder = HttpClientBuilder .create ();
7074 CredentialsProviderBuilder credProviderBuilder = CredentialsProviderBuilder .create ();
7175 SocketConfig .Builder soCfgBuilder = SocketConfig .custom ();
76+ PoolingHttpClientConnectionManagerBuilder connMgrBuilder = PoolingHttpClientConnectionManagerBuilder .create ();
7277
78+ MapUtils .applyInt (chConfiguration , ClickHouseClientOption .SOCKET_TIMEOUT .getKey (),
79+ (t ) -> soCfgBuilder .setSoTimeout (t , TimeUnit .MILLISECONDS ));
80+ MapUtils .applyInt (chConfiguration , ClickHouseClientOption .SOCKET_RCVBUF .getKey (),
81+ soCfgBuilder ::setRcvBufSize );
82+ MapUtils .applyInt (chConfiguration , ClickHouseClientOption .SOCKET_SNDBUF .getKey (),
83+ soCfgBuilder ::setSndBufSize );
7384
7485 String proxyHost = chConfiguration .get (ClickHouseClientOption .PROXY_HOST .getKey ());
7586 String proxyPort = chConfiguration .get (ClickHouseClientOption .PROXY_PORT .getKey ());
@@ -96,6 +107,9 @@ public CloseableHttpClient createHttpClient() {
96107 clientBuilder .disableCookieManagement ();
97108 }
98109 clientBuilder .setDefaultCredentialsProvider (credProviderBuilder .build ());
110+
111+ connMgrBuilder .setDefaultSocketConfig (soCfgBuilder .build ());
112+ clientBuilder .setConnectionManager (connMgrBuilder .build ());
99113 return clientBuilder .build ();
100114 }
101115
0 commit comments