Spring Cloud Gateway中是否存在默认请求超时?

时间:2019-02-21 16:46:20

标签: spring-cloud-gateway

documentation中,我确实看到了如何使用Hystrix来实现超时,但是我只是想确保没有实现默认的超时。

1 个答案:

答案 0 :(得分:0)

文档中现在还有一个有关chapter的一般超时的信息。可以设置全局超时和每个路由超时。我找不到默认值,但似乎根本没有默认超时(当我不包括超时配置时,HTTP请求正在进行了几分钟。)除了spring-cloud-gateway超时之外,还可以使用hystrix超时,例如本post中所述。

全局超时:

spring:
  cloud:
    gateway:
      httpclient:
        connect-timeout: 1000
        response-timeout: 5000

每个路由超时:

  - id: per_route_timeouts
    uri: https://example.org
    predicates:
      - name: Path
        args:
          pattern: /delay/{timeout}
    metadata:
      response-timeout: 200
      connect-timeout: 200

使用Java DSL的每个路由超时:

import static org.springframework.cloud.gateway.support.RouteMetadataUtils.CONNECT_TIMEOUT_ATTR;
import static org.springframework.cloud.gateway.support.RouteMetadataUtils.RESPONSE_TIMEOUT_ATTR;

  @Bean
  public RouteLocator customRouteLocator(RouteLocatorBuilder routeBuilder){
     return routeBuilder.routes()
           .route("test1", r -> {
              return r.host("*.somehost.org").and().path("/somepath")
                    .filters(f -> f.addRequestHeader("header1", "header-value-1"))
                    .uri("http://someuri")
                    .metadata(RESPONSE_TIMEOUT_ATTR, 200)
                    .metadata(CONNECT_TIMEOUT_ATTR, 200);
           })
           .build();
  }