Spring cloud 如何在Spring Cloud Gateway中为每个路由设置超时?

Spring cloud 如何在Spring Cloud Gateway中为每个路由设置超时?,spring-cloud,spring-cloud-gateway,Spring Cloud,Spring Cloud Gateway,在SpringCloudGateway中有没有一种方法可以为每个路由设置不同的超时值? 如 /路线1-30s /route2-20s是的,我们可以通过为不同的路由定义不同的hystrix命令来完成相同的操作。考虑下面的例子,对于 RoutEy1 1/代码>超时是15秒,因为这里使用的 HySrxs命令“代码>默认被配置为超时15秒。 # =========================================== # Timeout 15 seconds - id: route

在SpringCloudGateway中有没有一种方法可以为每个路由设置不同的超时值? 如 /路线1-30s
/route2-20s

是的,我们可以通过为不同的路由定义不同的
hystrix
命令来完成相同的操作。考虑下面的例子,对于<代码> RoutEy1 1/代码>超时是15秒,因为这里使用的<代码> HySrxs<代码>命令“代码>默认被配置为超时15秒。

 # ===========================================
 # Timeout 15 seconds
  - id: route_1
    uri: ${test.uri}
    predicates:
    - Path=/timeout/**
    filters:
    - name: Hystrix
      args:
        name: default
        fallbackUri: forward:/hystrixfallback

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 15000
# ===========================================
  # Timeout 5 seconds
  - id: route_2
    uri: ${test.uri}/count
    predicates:
    - Path=/count
    filters:
    - name: Hystrix
      args:
        name: applicationTimeOut
        fallbackUri: forward:/hystrixfallback

hystrix.command.applicationTimeOut.execution.isolation.thread.timeoutInMilliseconds: 5000
现在对于
route_2
使用的
hystrix
命令是
applicationTimeOut
,超时时间为5秒

 # ===========================================
 # Timeout 15 seconds
  - id: route_1
    uri: ${test.uri}
    predicates:
    - Path=/timeout/**
    filters:
    - name: Hystrix
      args:
        name: default
        fallbackUri: forward:/hystrixfallback

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 15000
# ===========================================
  # Timeout 5 seconds
  - id: route_2
    uri: ${test.uri}/count
    predicates:
    - Path=/count
    filters:
    - name: Hystrix
      args:
        name: applicationTimeOut
        fallbackUri: forward:/hystrixfallback

hystrix.command.applicationTimeOut.execution.isolation.thread.timeoutInMilliseconds: 5000
现在对于
route_3
使用的
hystrix
命令是
apimeout
,超时时间为2秒

# ===========================================   
  # Timeout 2 seconds
    - id: route_3
    uri: ${test.uri}
    predicates:
    - Path=/event/**
    filters:
    - name: Hystrix
      args:
        name: apiTimeOut
        fallbackUri: forward:/hystrixfallback
hystrix.command.apiTimeOut.execution.isolation.thread.timeoutInMilliseconds: 2000

根据Spring Cloud Gateway文档,这要简单得多:

因此,您可以按每条路由配置连接和读取超时,如下所示:

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

如果对您有效,请标记答案。请注意,这不会影响Hystrix超时。