From aa18bf04c1c61a139def21c5488684bfc29ec0a6 Mon Sep 17 00:00:00 2001 From: liujiewang <7585882+liujiewang@user.noreply.gitee.com> Date: Mon, 21 Feb 2022 06:52:47 +0000 Subject: [PATCH] update easy-es-boot-stater/src/main/java/com/xpc/easyes/autoconfig/config/EsAutoConfiguration.java. --- .../config/EsAutoConfiguration.java | 45 ++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/easy-es-boot-stater/src/main/java/com/xpc/easyes/autoconfig/config/EsAutoConfiguration.java b/easy-es-boot-stater/src/main/java/com/xpc/easyes/autoconfig/config/EsAutoConfiguration.java index 60222e20..77c4d146 100644 --- a/easy-es-boot-stater/src/main/java/com/xpc/easyes/autoconfig/config/EsAutoConfiguration.java +++ b/easy-es-boot-stater/src/main/java/com/xpc/easyes/autoconfig/config/EsAutoConfiguration.java @@ -43,6 +43,7 @@ import static com.xpc.easyes.core.constants.BaseEsConstants.DEFAULT_SCHEMA; public class EsAutoConfiguration implements InitializingBean, EnvironmentAware, PropertyKeyConstants { @Autowired private EsConfigProperties esConfigProperties; + private Environment environment; @Override @@ -73,20 +74,44 @@ public class EsAutoConfiguration implements InitializingBean, EnvironmentAware, // 构建连接对象 RestClientBuilder builder = RestClient.builder(httpHost); - // 设置账号密码之类的 - String username = environment.getProperty(USERNAME); - String password = environment.getProperty(PASSWORD); - if (!StringUtils.isEmpty(username) && !StringUtils.isEmpty(password)) { - final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - // 设置账号密码 - credentialsProvider.setCredentials(AuthScope.ANY, - new UsernamePasswordCredentials(esConfigProperties.getUsername(), esConfigProperties.getPassword())); + // 设置账号密码最大连接数之类的 + String username = esConfigProperties.getUsername(); + String password = esConfigProperties.getPassword(); + Integer maxConnTotal = esConfigProperties.getMaxConnTotal(); + Integer maxConnPerRoute = esConfigProperties.getMaxConnPerRoute(); + boolean needSetHttpClient = (StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)) + || (Objects.nonNull(maxConnTotal) || Objects.nonNull(maxConnPerRoute)); + if (needSetHttpClient) { builder.setHttpClientConfigCallback(httpClientBuilder -> { - httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); + Optional.ofNullable(maxConnTotal).ifPresent(httpClientBuilder::setMaxConnTotal); + Optional.ofNullable(maxConnPerRoute).ifPresent(httpClientBuilder::setMaxConnPerRoute); + if (StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)) { + final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); + // 设置账号密码 + credentialsProvider.setCredentials(AuthScope.ANY, + new UsernamePasswordCredentials(esConfigProperties.getUsername(), esConfigProperties.getPassword())); + httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); + } return httpClientBuilder; }); } - //TODO 其它设置,比如超时时间 异步之类的 后续优化 + + // 设置超时时间之类的 + Integer connectTimeOut = esConfigProperties.getConnectTimeout(); + Integer socketTimeOut = esConfigProperties.getSocketTimeout(); + Integer requestTimeOut = esConfigProperties.getRequestTimeout(); + Integer connectionRequestTimeOut = esConfigProperties.getConnectionRequestTimeout(); + boolean needSetRequestConfig = Objects.nonNull(connectTimeOut) || Objects.nonNull(requestTimeOut) + || Objects.nonNull(connectionRequestTimeOut); + if (needSetRequestConfig) { + builder.setRequestConfigCallback(requestConfigBuilder -> { + Optional.ofNullable(connectTimeOut).ifPresent(requestConfigBuilder::setConnectTimeout); + Optional.ofNullable(socketTimeOut).ifPresent(requestConfigBuilder::setSocketTimeout); + Optional.ofNullable(connectionRequestTimeOut) + .ifPresent(requestConfigBuilder::setConnectionRequestTimeout); + return requestConfigBuilder; + }); + } return new RestHighLevelClient(builder); }