diff --git a/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java b/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java index 0867a4301b..ee6a2461ea 100644 --- a/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java +++ b/client-adapter/es7x/src/main/java/com/alibaba/otter/canal/client/adapter/es7x/support/ESConnection.java @@ -7,6 +7,8 @@ import java.net.UnknownHostException; import java.util.Arrays; import java.util.Map; +import java.util.Objects; +import java.util.Optional; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpHost; @@ -90,6 +92,19 @@ public ESConnection(String[] hosts, Map properties, ESClientMode nameAndPwdArr[1])); restClientBuilder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)); } + String connectTimeout = properties.get("connectTimeout"); + String socketTimeout = properties.get("socketTimeout"); + String connectionRequestTimeout = properties.get("connectionRequestTimeout"); + boolean needSetRequestConfig = Objects.nonNull(connectTimeout) || Objects.nonNull(socketTimeout) || Objects.nonNull(connectionRequestTimeout); + if (needSetRequestConfig) { + restClientBuilder.setRequestConfigCallback(requestConfigBuilder -> { + Optional.ofNullable(connectTimeout).map(Integer::valueOf).ifPresent(requestConfigBuilder::setConnectTimeout); + Optional.ofNullable(socketTimeout).map(Integer::valueOf).ifPresent(requestConfigBuilder::setSocketTimeout); + Optional.ofNullable(connectionRequestTimeout).map(Integer::valueOf) + .ifPresent(requestConfigBuilder::setConnectionRequestTimeout); + return requestConfigBuilder; + }); + } restHighLevelClient = new RestHighLevelClient(restClientBuilder); } }