SpringCloud gateway 元数据,超时,Netty Access Logs
元数据
spring:
cloud:
gateway:
routes:
- id: route_with_metadata
uri: https://example.org
metadata:
optionName: "OptionValue"
compositeObject:
name: "value"
iAmNumber: 1
可通过ServerWebExchange获取:
Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
route.getMetadata();
route.getMetadata(someKey);
超时
要配置全局http超时:
connect-timeout必须以毫秒为单位指定。
response-timeout必须指定为java.time.Duration。
spring:
cloud:
gateway:
enabled: true
routes:
- id: Goods-Server # 路由 id,唯一标识
uri: lb://producer
predicates:
# - Path=/** # 断言,路由匹配条件,匹配 /product 开头的所有 api
- Path=/producer/{segment}
filters:
- StripPrefix=1
metrics:
tags:
path:
enabled: true
enabled: true
httpclient:
connect-timeout: 1000
response-timeout: 1s
修改Producer模块的Controller:
@RequestMapping("/hello")
public String hello(String name, HttpServletRequest request, HttpServletResponse response) {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return "hello," + name + "," + port;
}
访问 http://localhost:8500/producer/hello ,看到:

要配置每个路由超时:
connect-timeout必须以毫秒为单位指定。
response-timeout必须以毫秒为单位指定。
spring:
cloud:
gateway:
enabled: true
routes:
- id: Goods-Server # 路由 id,唯一标识
uri: lb://producer
predicates:
# - Path=/** # 断言,路由匹配条件,匹配 /product 开头的所有 api
- Path=/producer/{segment}
filters:
- StripPrefix=1
metadata:
response-timeout: 200
connect-timeout: 200
修改Producer模块的Controller:
@RequestMapping("/hello")
public String hello(String name, HttpServletRequest request, HttpServletResponse response) {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return "hello," + name + "," + port;
}
访问 http://localhost:8500/producer/hello ,看到:

Netty Access Logs
要启用Reactor Netty访问日志,请设置-Dreaactor.Netty.http.server.accessLogEnabled=true。必须是Java System Property, 不能是Spring Boot property。
在Resources加入 logback.xml文件:
启动GatewayServer是加入JVM属性:-Dreactor.netty.http.server.accessLogEnabled=true。访问 http://localhost:8500/producer/hello ,从控制台看到:
2023-05-07 13:35:41.625 INFO 43318 --- [or-http-epoll-2] reactor.netty.http.server.AccessLog : 0:0:0:0:0:0:0:1%0 - - [07/5月/2023:13:35:41 +0800] "GET /producer/hello HTTP/1.1" 200 15 257

浙公网安备 33010602011771号