首页 > 解决方案 > 如何通过代码在 Spring Cloud Gateway 中配置请求超时

问题描述

我需要在代码中为所有路由配置请求超时。我知道可以通过以下属性配置全局超时application.properties,但是如何在代码中配置它们?

spring.cloud.gateway.httpclient.connect-timeout=1000
spring.cloud.gateway.httpclient.response-timeout=5s

我已经查看GatewayAutoConfiguration了默认情况下如何配置超时。HttpClientProperties拥有这两个属性,但它不能被覆盖。

@Bean
public HttpClientProperties httpClientProperties() {
    return new HttpClientProperties();
}

这可以在代码中完成吗?

标签: spring-bootspring-cloud-gateway

解决方案


我解决了我的问题。我创建了自己的 bean 并使用注释@Primary来创建具有相同类型的单独 bean。GatewayAutoConfiguration现在使用我的 bean 而不是默认的 bean。

@Bean
@Primary
public HttpClientProperties overwrittenHttpClientProperties() {
    HttpClientProperties p = new HttpClientProperties();
    p.setConnectTimeout(3000);
    p.setResponseTimeout(Duration.ofMillis(10000));
    return p;
}

推荐阅读