微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在调用@Predestroy方法时有效地使用Elasticsearch highlevelClient bean

如何解决如何在调用@Predestroy方法时有效地使用Elasticsearch highlevelClient bean

我有一个弹簧启动应用程序,该应用程序执行弹性搜索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方法

  @PreDestroy
    public void destroy() throws InterruptedException {
        Thread.sleep(60000);
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。