You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.2.4:RestTemplate与JettyClientHttpRequestFactory空闲超时配置问题

解决方案:配置RestTemplate的Jetty客户端空闲超时

你遇到的是Jetty HTTP客户端的空闲超时问题,server.jetty.connection-idle-timeout是配置Spring Boot内嵌Jetty服务器的连接超时,和RestTemplate使用的Jetty客户端完全无关,所以这个配置不会作用于你的外部请求。

默认情况下,Jetty HttpClient的空闲超时为30秒(即报错中的30000ms),这就是请求超过30秒触发超时的原因。要解决这个问题,需要自定义Jetty HttpClient实例并设置空闲超时,再将其关联到RestTemplate的请求工厂。

步骤1:自定义Jetty HttpClient Bean

创建配置类,定义带有自定义空闲超时的Jetty HttpClient:

import org.eclipse.jetty.client.HttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JettyHttpClientConfig {

    @Bean
    public HttpClient jettyHttpClient() {
        HttpClient httpClient = new HttpClient();
        // 设置空闲超时,单位为毫秒,这里与你之前的server端配置保持一致
        httpClient.setIdleTimeout(800000);
        
        // 可选:按需配置其他超时参数
        // 连接超时:建立TCP连接的最大等待时间
        // httpClient.setConnectTimeout(10000);
        // 请求超时:整个请求从发送到接收响应的最大时长
        // httpClient.setRequestTimeout(800000);
        
        return httpClient;
    }
}

步骤2:配置RestTemplate使用自定义HttpClient

将上面定义的HttpClient注入到JettyClientHttpRequestFactory,再创建RestTemplate:

import org.eclipse.jetty.client.HttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.JettyClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate(HttpClient jettyHttpClient) {
        JettyClientHttpRequestFactory requestFactory = new JettyClientHttpRequestFactory(jettyHttpClient);
        return new RestTemplate(requestFactory);
    }
}

关键说明

  • 空闲超时(Idle Timeout):指连接在没有数据传输时的最大存活时间,若请求过程中长时间无数据交互,会触发该超时。
  • 若你的外部服务不仅是空闲时间长,整个请求响应周期本身就很长,建议同时配置requestTimeout,避免整个请求因超时而失败。

内容的提问来源于stack exchange,提问作者user24583087

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:32:15