12. Http 超时配置
Http 超时(响应和连接)可以为所有路由配置,也可以为每个特定路由覆盖。
12.1. 全局超时
要配置全局 http 超时:
必须以毫秒为单位指定。
必须指定为 java.time.Durationconnect-timeout
response-timeout
全局 HTTP 超时示例
spring:
cloud:
gateway:
httpclient:
connect-timeout: 1000
response-timeout: 5s
12.2. 每条路由超时
要配置每路由超时:
必须以毫秒为单位指定。
必须以毫秒为单位指定。connect-timeout
response-timeout
通过配置进行按路由 HTTP 超时配置
- 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();
}
具有负值的 per-route 将禁用 global 值。response-timeout
response-timeout
- id: per_route_timeouts uri: https://example.org predicates: - name: Path args: pattern: /delay/{timeout} metadata: response-timeout: -1