Java 如何在SpringCloudGateway中设置超时?

Java 如何在SpringCloudGateway中设置超时?,java,spring,spring-boot,api-gateway,spring-cloud-gateway,Java,Spring,Spring Boot,Api Gateway,Spring Cloud Gateway,如何在SpringCloudGateway中设置超时 是否有一种方法可以只为一个路由设置超时-文档。引用自spring文档 设置全局超时的步骤 每条路线超时:- - id: per_route_timeouts uri: https://example.org predicates: - name: Path args: pattern: /delay/{timeout} metadata: response

如何在SpringCloudGateway中设置超时


是否有一种方法可以只为一个路由设置超时-文档。

引用自spring文档

设置全局超时的步骤

每条路线超时:-

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

从spring文档中引用

设置全局超时的步骤

每条路线超时:-

  - 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();
      }
如果您不使用R4J断路器或限时器,则可接受的答案有效……但如果您使用R4J断路器或限时器,则上述设置将不充分,事实上将被R4J设置覆盖。本文对此进行了讨论,并且可以找到截至本文撰写之时的当前解决方案……基本上,您编写了一个自定义bean,因此它将遵守配置设置:

@豆子 公共反应器权限4JC断路器工厂反应器权限4JC断路器工厂最终断路器权限{ ReactiveResilience4JCircuitBreakerFactory ReactiveResilience4JCircuitBreakerFactory=新的ReactiveResilience4JCircuitBreakerFactory; ReactiveResilience 4JC电路断路器工厂。配置电路断路器注册电路断路器注册; reactiveResilience4JCircuitBreakerFactory.configureDefaultid->{ CircuitBreakerConfig CircuitBreakerConfig=circuitBreakerRegistry.findid.isPresent?circuitBreakerRegistry.findid.get.getCircuitBreakerConfig :circuitBreakerRegistry.getDefaultConfig; TimeLimiterConfig TimeLimiterConfig=timeLimiterRegistry.findid.isPresent?timeLimiterRegistry.findid.get.getTimeLimiterConfig :timeLimiterRegistry.getDefaultConfig; 返回新的弹性4JConfigbuilderId .断路器配置断路器配置 .timeLimiterConfigtimeLimiterConfig 建筑 }; 返回ReactiveResilience4JC断路器工厂; } 如果您不使用R4J断路器或限时器,则可接受的答案有效……但如果您使用R4J断路器或限时器,则上述设置将不充分,事实上将被R4J设置覆盖。本文对此进行了讨论,并且可以找到截至本文撰写之时的当前解决方案……基本上,您编写了一个自定义bean,因此它将遵守配置设置:

@豆子 公共反应器权限4JC断路器工厂反应器权限4JC断路器工厂最终断路器权限{ ReactiveResilience4JCircuitBreakerFactory ReactiveResilience4JCircuitBreakerFactory=新的ReactiveResilience4JCircuitBreakerFactory; ReactiveResilience 4JC电路断路器工厂。配置电路断路器注册电路断路器注册; reactiveResilience4JCircuitBreakerFactory.configureDefaultid->{ CircuitBreakerConfig CircuitBreakerConfig=circuitBreakerRegistry.findid.isPresent?circuitBreakerRegistry.findid.get.getCircuitBreakerConfig :circuitBreakerRegistry.getDefaultConfig; TimeLimiterConfig TimeLimiterConfig=timeLimiterRegistry.findid.isPresent?timeLimiterRegistry.findid.get.getTimeLimiterConfig :timeLimiterRegistry.getDefaultConfig; 返回新的弹性4JConfigbuilderId .断路器配置断路器配置 .timeLimiterConfigtimeLimiterConfig 建筑 }; 返回ReactiveResilience4JC断路器工厂; }
对我来说它不起作用你能帮我吗?对我来说它不起作用你能帮我吗?我认为公认的答案对香草路线是正确的。如果插入断路器,还应检查it@TobiaZambon是的,你是正确的,我将编辑答案以添加澄清。我认为接受的答案对于香草路线是正确的。如果插入断路器,还应检查it@TobiaZambon是的,你是对的,我将编辑答案以添加澄清。