Как эффективно использовать 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);
    }

0 ответов

Другие вопросы по тегам