文章目录
- 前言
- 一、示例
- 二、Route Metadata Configuration
- 1. 路由元数据配置
- 2. 获取元数据配置
- 三、Http timeouts configuration(请求超时配置)
- 1. Global timeouts(全局)
- 2. Per-route timeouts(路由)
- 四、CORS Configuration(跨域配置)
- 1. Global CORS Configuration(全局)
- 2. Route CORS Configuration(路由)
- 总结
前言
我们可以通过官方提供的配置,让我们的系统更加地灵活和健壮。
一、示例
spring:
cloud:
gateway:
routes:
- id: setstatus_route
uri: https://example.org
filters:
- name: SetStatus
args:
status: 401
- id: setstatusshortcut_route
uri: https://example.org
filters:
- SetStatus=401
这里定义了两个路由,第一个路由
setstatus_route
配置了一个过滤器和传递了一个参数;
第二个路由setstatusshortcut_route
快捷方式(我的理解为短语更合适),让配置看上去更加简洁,效果等同。
二、Route Metadata Configuration
我们可以在路由中自定义一些配置信息,在程序运行时根据这些信息做不同的处理。
1. 路由元数据配置
spring:
cloud:
gateway:
routes:
- id: route_with_metadata
uri: https://example.org
metadata:
optionName: "OptionValue"
compositeObject:
name: "value"
iAmNumber: 1
2. 获取元数据配置
获取配置
这里我们在之前的
BlackListGatewayFilterFactory
网关过滤器的基础上获取,仅列出核心代码
Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
// 获取所有的metadata配置
Map<String, Object> metadataAll = route.getMetadata();
System.out.println(metadataAll);
// 根据key获取单个metadata配置
Object o = metadataAll.get("optionName");
System.out.println(o);
输出
{optionName=OptionValue, compositeObject={name=value}, iAmNumber=1}
OptionValue
三、Http timeouts configuration(请求超时配置)
1. Global timeouts(全局)
connect-timeout
单位是毫秒
response-timeout
单位是java.time.Duration
spring:
cloud:
gateway:
httpclient:
connect-timeout: 1000
response-timeout: 5s
TimeUnit.SECONDS.sleep(5);
超时测试
2. Per-route timeouts(路由)
这个配置参数和上面全局的一样,只不过作用范围是路由级别,作用范围更细了,时间单位略有区别
connect-timeout
单位是毫秒
response-timeout
单位是毫秒
- id: per_route_timeouts
uri: https://example.org
predicates:
- name: Path
args:
pattern: /delay/{timeout}
metadata:
connect-timeout: 200
response-timeout: 6000
上面业务休眠5秒,路由这里设置6秒的响应时间,覆盖全局超时时间,达到正常响应的效果,整个业务的处理时间应为5秒多,不到6秒
路由超时测试
四、CORS Configuration(跨域配置)
1. Global CORS Configuration(全局)
全局跨域配置
spring:
cloud:
gateway:
globalcors:
cors-configurations:
'[/**]':
allowedOrigins: "https://docs.spring.io"
allowedMethods:
- GET
2. Route CORS Configuration(路由)
路由跨域配置
spring:
cloud:
gateway:
routes:
- id: cors_route
uri: https://example.org
predicates:
- Path=/service/**
metadata:
cors:
allowedOrigins: '*'
allowedMethods:
- GET
- POST
allowedHeaders: '*'
maxAge: 30
总结
回到顶部
更多配置请查看