问题描述
我有一个弹簧启动应用程序,该应用程序执行弹性搜索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 (将#修改为@)