Skip to content

Commit bcc0f63

Browse files
committed
add reading configuration for some parameters
1 parent 64569f6 commit bcc0f63

File tree

2 files changed

+49
-3
lines changed

2 files changed

+49
-3
lines changed

client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.apache.hc.client5.http.impl.auth.CredentialsProviderBuilder;
1515
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
1616
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
17+
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
1718
import org.apache.hc.client5.http.protocol.HttpClientContext;
1819
import org.apache.hc.core5.http.ClassicHttpResponse;
1920
import 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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.clickhouse.client.api.internal;
2+
3+
4+
import java.util.Map;
5+
import java.util.function.Consumer;
6+
7+
/**
8+
* Collection of utility methods for working with maps.
9+
*/
10+
public class MapUtils {
11+
12+
public static void applyLong(Map<String, String> map, String key, Consumer<Long> consumer) {
13+
String val = map.get(key);
14+
if (val != null) {
15+
try {
16+
consumer.accept(Long.valueOf(val));
17+
} catch (NumberFormatException e) {
18+
throw new RuntimeException("Invalid value for key " + key + ": " + val, e);
19+
}
20+
}
21+
}
22+
public static void applyInt(Map<String, String> map, String key, Consumer<Integer> consumer) {
23+
String val = map.get(key);
24+
if (val != null) {
25+
try {
26+
consumer.accept(Integer.valueOf(val));
27+
} catch (NumberFormatException e) {
28+
throw new RuntimeException("Invalid value for key " + key + ": " + val, e);
29+
}
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)