diff --git a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/ChenfengElasticsearchAutoConfiguration.java b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/ChenfengElasticsearchAutoConfiguration.java index 455804002..204646e87 100644 --- a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/ChenfengElasticsearchAutoConfiguration.java +++ b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/ChenfengElasticsearchAutoConfiguration.java @@ -19,6 +19,7 @@ import org.apache.http.client.config.RequestConfig; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; +import org.apache.http.impl.nio.reactor.IOReactorConfig; import org.apache.http.ssl.SSLContextBuilder; import org.apache.http.ssl.SSLContexts; import org.elasticsearch.client.RestClient; @@ -41,6 +42,7 @@ import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; +import java.time.Duration; /** @@ -135,9 +137,9 @@ public class ChenfengElasticsearchAutoConfiguration { // 设置账号密码、连接信息 HttpAsyncClientBuilder httpAsyncClientBuilder = httpClientBuilder .setDefaultRequestConfig(RequestConfig.custom() - .setConnectTimeout(properties.getConnectionTimeout().toSecondsPart()) - .setSocketTimeout(properties.getSocketTimeout().toSecondsPart()) - .setConnectionRequestTimeout(properties.getConnectionRequestTimeout().toSecondsPart()) + .setConnectTimeout((int) properties.getConnectionTimeout().toMillis()) + .setSocketTimeout((int) properties.getSocketTimeout().toMillis()) + .setConnectionRequestTimeout((int) properties.getConnectionRequestTimeout().toMillis()) .build()); if (ObjectUtil.isNotNull(credentialsProvider)) { httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider); @@ -146,6 +148,10 @@ public class ChenfengElasticsearchAutoConfiguration { // 开启ssl配置连接证书 httpAsyncClientBuilder.setSSLContext(buildSSLContext(properties)).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE); } + // 手动开启keepalive + httpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setSoKeepAlive(true).build()); + // 手动设置保活时长 + httpAsyncClientBuilder.setKeepAliveStrategy(((response, context) -> Duration.ofMinutes(5).toMillis())); return httpAsyncClientBuilder; }; return RestClient.builder(toHttpHost(properties.getUris(), properties.isSecurityHttpSslEnable())).setHttpClientConfigCallback(httpClientConfigCallback).build(); diff --git a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/EsProperties.java b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/EsProperties.java index 2dd90ffe5..505c809ef 100644 --- a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/EsProperties.java +++ b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/config/EsProperties.java @@ -25,7 +25,7 @@ public class EsProperties { /** * Connection timeout used when communicating with Elasticsearch. */ - private Duration connectionTimeout = Duration.ofSeconds(10); + private Duration connectionTimeout = Duration.ofSeconds(5); /** * Socket timeout used when communicating with Elasticsearch.