esclient初始化参数调整

This commit is contained in:
gaoqr
2025-01-13 14:20:01 +08:00
parent fc377cacec
commit 12b6de75fd
2 changed files with 10 additions and 4 deletions
@@ -19,6 +19,7 @@ import org.apache.http.client.config.RequestConfig;
import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; 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.SSLContextBuilder;
import org.apache.http.ssl.SSLContexts; import org.apache.http.ssl.SSLContexts;
import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClient;
@@ -41,6 +42,7 @@ import java.security.KeyStore;
import java.security.KeyStoreException; import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import java.time.Duration;
/** /**
@@ -135,9 +137,9 @@ public class ChenfengElasticsearchAutoConfiguration {
// 设置账号密码、连接信息 // 设置账号密码、连接信息
HttpAsyncClientBuilder httpAsyncClientBuilder = httpClientBuilder HttpAsyncClientBuilder httpAsyncClientBuilder = httpClientBuilder
.setDefaultRequestConfig(RequestConfig.custom() .setDefaultRequestConfig(RequestConfig.custom()
.setConnectTimeout(properties.getConnectionTimeout().toSecondsPart()) .setConnectTimeout((int) properties.getConnectionTimeout().toMillis())
.setSocketTimeout(properties.getSocketTimeout().toSecondsPart()) .setSocketTimeout((int) properties.getSocketTimeout().toMillis())
.setConnectionRequestTimeout(properties.getConnectionRequestTimeout().toSecondsPart()) .setConnectionRequestTimeout((int) properties.getConnectionRequestTimeout().toMillis())
.build()); .build());
if (ObjectUtil.isNotNull(credentialsProvider)) { if (ObjectUtil.isNotNull(credentialsProvider)) {
httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider); httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
@@ -146,6 +148,10 @@ public class ChenfengElasticsearchAutoConfiguration {
// 开启ssl配置连接证书 // 开启ssl配置连接证书
httpAsyncClientBuilder.setSSLContext(buildSSLContext(properties)).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE); 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 httpAsyncClientBuilder;
}; };
return RestClient.builder(toHttpHost(properties.getUris(), properties.isSecurityHttpSslEnable())).setHttpClientConfigCallback(httpClientConfigCallback).build(); return RestClient.builder(toHttpHost(properties.getUris(), properties.isSecurityHttpSslEnable())).setHttpClientConfigCallback(httpClientConfigCallback).build();
@@ -25,7 +25,7 @@ public class EsProperties {
/** /**
* Connection timeout used when communicating with Elasticsearch. * 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. * Socket timeout used when communicating with Elasticsearch.