首页 > 解决方案 > 如何在spring cloud gateway中设置超时?

问题描述

如何设置一个time-outspring cloud gateway

routeLocatorBuilder.routes()
        .route("test-api", r -> r.path("/api/**")).uri(apiLb))
        .route("test-doc", r -> r.path("/doc/**")).uri(docLb));

ROUTE有没有办法只为一个-设置一个超时时间doc

标签: javaspringspring-bootapi-gatewayspring-cloud-gateway

解决方案


引用自spring doc

设置global time-out

spring:
  cloud:
    gateway:
      httpclient:
        connect-timeout: 1000
        response-timeout: 5s

每条路由超时:-

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

在 Java 中:

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();
      }

推荐阅读