spring - Spring restTemplate 超时而不抛出异常
问题描述
我在后端服务上发现了超时问题:SA。SA 使用 restTemplate 向 3party api 发送请求:
try {
log.info("sending request to sb"); //position 1
return restTemplate.postForObject("https://url.to.sb.com", null, String.class);
}catch(Exception ex) {
log.error("request error", ex) //position 2
}
sb 服务正常工作。浏览器获取网关超时错误。打印位置 1 上的日志,但不打印位置 2。
这是我编写restTemplate的方式:
RestTemplate restTemplate = new RestTemplate();
HttpClientBuilder httpClientBuilder = HttpClients.custom();
httpClientBuilder.setSSLContext(xxxx);
CloseableHttpClient client = httpClientBuilder.build();
restTemplate.setInterceptors(Arrays.asList(new DefaultHttpRequestInterceptor()));
HttpComponentsClientHttpRequestFactory requestFactory = new
HttpComponentsClientHttpRequestFactory(client);
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(requestFactory));
return restTemplate;
为什么前端获取网关超时,但 SA 上没有错误日志?似乎该线程处于待处理状态。这个问题在重新启动 SA 后得到解决。但我还是想知道这个问题的可能原因,不确定它与requestFactory setTimeout有关
解决方案
推荐阅读
- react-native - 每次应用程序从后台进入前台时都会触发“FCM.on(FCMEvent.Notification,notif”)
- android - 如何获得多个查询的结果?
- dart - Flutter中基于动态数据扩展卡片高度
- ios - 如何在 iOS swift 中制作登录屏幕的单元测试用例
- c# - 将私钥投射到 RSACryptoServiceProvider 不起作用
- android - Pdf不显示所有日文字符
- git - 如何仅从 git 中检出顶级文件?
- delphi - Delphi VCL 样式问题与 TListview EditCaption 和 HideSelection
- java - 以编程方式配置通过 CXF 启动的码头
- visual-studio-2013 - WiX 工具集是否与 Windows 10 兼容