喵星之旅-狂奔的兔子-ElasticSearch远程主机强迫关闭了一个现有的连接

项目集成ElasticSearch实现全文检索,项目启动可正常进行创建索引、检索等操作,长时间无操作后再次请求ES服务报错远程主机强迫关闭了一个现有的连接。如果尝试再次链接则一切正常。调整ElasticSearchConfig配置,可问题解决。

修改前

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* @author : bunny
* @description :
*/
@Slf4j
@Configuration
public class ElasticsearchConfig {
@Value("${kysjkbunny.elasticsearch.hostname}")
private String host;
@Value("${kysjkbunny.elasticsearch.port}")
private Integer port;
@Value("${kysjkbunny.elasticsearch.scheme}")
private String scheme;

@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(host, port, scheme)));
return client;



return client;
}
}

修改后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* @author : bunny
* @description :
*/
@Slf4j
@Configuration
public class ElasticsearchConfig {
@Value("${kysjkbunny.elasticsearch.hostname}")
private String host;
@Value("${kysjkbunny.elasticsearch.port}")
private Integer port;
@Value("${kysjkbunny.elasticsearch.scheme}")
private String scheme;

@Bean
public RestHighLevelClient restHighLevelClient() {

RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(host,port,scheme)
).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
return requestConfigBuilder.setConnectTimeout(90000000)//25hours
.setSocketTimeout(90000000);
}
}).setHttpClientConfigCallback((httpAsyncClientBuilder -> {
httpAsyncClientBuilder.disableAuthCaching();
httpAsyncClientBuilder.setKeepAliveStrategy((httpResponse,httpContext) -> TimeUnit.MINUTES.toMillis(3));
httpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setSoKeepAlive(true).build());
return httpAsyncClientBuilder;
}))
);

return client;
}
}

文章目录
|