java - Spring RestTemplate.exchange 卡住了
问题描述
我有一个使用 Spring RestTemplate 的应用程序。有时,它会卡住(上次,它卡住了 2 天,然后我们才注意到并重新启动它):
"scheduling-1" #19 prio=5 os_prio=0 tid=0x00007fbcfdfc0800 nid=0x36 runnable [0x00007fbc901c7000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
- locked <0x00000000c4ae36d0> (a java.io.BufferedInputStream)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1593)
- locked <0x00000000c4aecc88> (a sun.net.www.protocol.http.HttpURLConnection)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
- locked <0x00000000c4aecc88> (a sun.net.www.protocol.http.HttpURLConnection)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at org.springframework.http.client.SimpleClientHttpResponse.getRawStatusCode(SimpleClientHttpResponse.java:55)
at org.springframework.web.client.DefaultResponseErrorHandler.hasError(DefaultResponseErrorHandler.java:55)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:765)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:669)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:578)
我使用 restTemplateBuilder.build() 构建 RestTemplate。
我会假设 RestTemplate 有某种默认的超时配置来在一段时间后断开连接,但它并没有断开它,所以我认为连接处于某种奇怪的状态。我能否以某种方式配置 RestTemplate 以在一段时间后断开连接,即使它认为连接正常?
解决方案
推荐阅读
- sql - 在 PostgreSQL 中将 IN 与 JOIN 结合
- xhtml - 使用 Pelican 生成格式良好的 XHTML
- database - Hbase 设计最佳实践
- unreal-engine4 - 有没有办法在 UE4 中创建一个一次只滚动一个元素的滚动框?
- python - 为 Scipy 的“odeint”的边界条件指定不同的时间点?
- python - 如何使用 python 使用多个相同的键格式化 JSON?
- spring-boot - 基于 SpringBootTest 的 Spock 规范的奇怪行为
- node.js - 开始与用户 Botkit 的对话
- java - 与实体不直接相关的属性的最佳设计方法是什么?
- ios - 使用 NSPredicate 时如何指定 Int 类型的范围