如何通过代码在 Spring Cloud Gateway 中配置请求超时

How to configure request timeouts in Spring Cloud Gateway via code

我需要在代码中为所有路由配置请求超时。我知道可以通过 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();
}

这可以用代码完成吗?

我解决了我的问题。我创建了自己的 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;
}