Как эффективно использовать bean-компонент Elasticsearch highlevelClient при вызове метода @Predestroy
У меня есть приложение для весенней загрузки, которое выполняет вызов API эластичного поиска (операции CRUD), и оно работает отлично, но во время выключения (из-за некоторого обслуживания или обновления сервера) оно не обрабатывает все потоки / запросы и выходит с
org.apache.http.ConnectionClosedException: Connection closed unexpectedly
. Чтобы избежать этого, я добавил
@Predestory
метод и добавил
Thread.sleep(60000)
но это не сработало. Пожалуйста, подскажите мне, как правильно справиться с этим сценарием.
ES RestHighLevelClient Bean:
@Bean
public RestHighLevelClient highLevelRestClient() {
if (StringUtils.isNotBlank(esUser)) {
//Auth is present
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(esUser, esPassword));
if ("https".equalsIgnoreCase(esProtocol)) {
client = new RestHighLevelClient(getHttpsClientBuilder(credentialsProvider));
} else {
client = new RestHighLevelClient(getHttpClientBuilder(credentialsProvider));
}
} else {
client = new RestHighLevelClient(restClientBuilder());
}
return client;
}
и метод Predestroy в классе Service
@PreDestroy
public void destroy() throws InterruptedException {
Thread.sleep(60000);
}