如何解决如何在调用@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 举报,一经查实,本站将立刻删除。