@Bean(destroyMethod = "close")
public RestHighLevelClient init() {
HttpHost[] httpHost;
httpHost = new HttpHost[model.getHosts().size()];
HttpHost[] finalHttpHost = httpHost;
final int[] i = {0};
model.getHosts().forEach(hostPort -> {
finalHttpHost[i[0]] = new HttpHost(String.valueOf(hostPort.getHost()), hostPort.getPort(), "http");
i[0] = i[0] + 1;
});
RestClientBuilder builder = RestClient.builder(finalHttpHost);
if (model.getUsername() != null && model.getPassword() != null) {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(model.getUsername(), model.getPassword()));
builder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
}
// Cấu hình timeout
builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
.setSocketTimeout(model.getSocketTimeout())
.setConnectTimeout(model.getConnectTimeout()));
return new RestHighLevelClient(builder);
}