有没有办法为 Spring Cloud Gateway 中的每个路由设置不同的超时值?例如 /route1 - 30s /route2 - 20s
问问题
3998 次
2 回答
3
是的,我们可以通过hystrix
为不同的路由定义不同的命令来做同样的事情。考虑以下示例,其中route_1
超时为 15 秒,因为hystrix
此处使用的命令default
配置了 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
现在使用route_2
的hystrix
命令applicationTimeOut
超时时间为 5 秒。
# ===========================================
# 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
命令apiTimeOut
超时时间为 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
于 2018-07-23T17:09:33.927 回答
0
根据 Spring Cloud Gateway 文档,这要简单得多:
https://cloud.spring.io/spring-cloud-gateway/reference/html/#per-route-timeouts
因此,您可以为每条路由配置连接和读取超时,如下所示:
- id: per_route_timeouts
uri: https://example.org
predicates:
- name: Path
args:
pattern: /delay/{timeout}
metadata:
response-timeout: 200
connect-timeout: 200
于 2020-06-08T11:04:12.043 回答