设置connectTimeout和readTimeout后,RestTemplate不超时

时间:2019-04-22 11:23:44

标签: java spring spring-boot

我拥有少量微服务的Spring Boot基础架构。他们彼此之间的交流很好。其中一个微服务有一些第三方调用,它们通过http调用了一些第三方服务。 我定义了自己的RestTemplate,并在init()方法中设置了connectTimeout和readTimeout。 从堆栈跟踪中,我看到使用了我的其余模板。

  @PostConstruct
  public void init() {

    HttpComponentsClientHttpRequestFactory requestFactory =
        new HttpComponentsClientHttpRequestFactory();
    requestFactory.setConnectTimeout(connectTimeout);
    requestFactory.setReadTimeout(readTimeout);
    this.restTemplate = new RestTemplate(requestFactory);
  }

问题在于某些请求正在处理几分钟,并且不会引发任何异常。 (我的超时时间要少得多-大约5-10秒) 可能是什么原因?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

缺少对setConnectionRequestTimeout(...)的调用

HttpComponentsClientHttpRequestFactory requestFactory =
        new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(connectTimeout);
requestFactory.setReadTimeout(readTimeout);
requestFactory.setConnectionRequestTimeout(...);
this.restTemplate = new RestTemplate(requestFactory);

Spring RestTemplate timeout