我有一些微服务的Spring Boot基础架构。他们彼此之间的交流很好。其中一个微服务有一些第三方调用,它们通过http调用了一些第三方服务。
我已经定义了自己的RestTemplate,并在init()方法中设置了connectTimeout和readTimeout。
从堆栈跟踪中,我看到使用了我的rest模板。
@PostConstruct
public void init() {
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(connectTimeout);
requestFactory.setReadTimeout(readTimeout);
this.restTemplate = new RestTemplate(requestFactory);
}
问题在于某些请求正在处理几分钟,并且不会引发任何异常。 (我的超时时间要少得多-大约5-10秒)
可能是什么原因?有任何想法吗?
最佳答案
缺少对setConnectionRequestTimeout(...)的调用
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(connectTimeout);
requestFactory.setReadTimeout(readTimeout);
requestFactory.setConnectionRequestTimeout(...);
this.restTemplate = new RestTemplate(requestFactory);
Spring RestTemplate timeout
关于java - 设置connectTimeout和readTimeout后RestTemplate不超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55793608/