Spring Cloud(2020.0.3) | 从入门到入土 - 24. Gateway 超时配置 & 跨域配置
Gateway 网关提供了两种超时机制:全局配置、路由配置一、全局超时spring:cloud:gateway:httpclient:connect-timeout: 1000response-timeout: 5sconnect-timeout 指:连接超时,这里单位是毫秒。response-timeout 值:响应超时,超过 5 秒没有响应,直接超时,这里的配置是遵循java.time.Dur
Gateway 网关提供了两种超时机制:全局配置、路由配置
一、全局超时
spring:
cloud:
gateway:
httpclient:
connect-timeout: 1000
response-timeout: 5s
connect-timeout 指:连接超时,这里单位是毫秒。
response-timeout 值:响应超时,超过 5 秒没有响应,直接超时,这里的配置是遵循 java.time.Duration。
测试:
我们只启动网关,不启动服务,然后进行请求。
可以看到,这里直接报异常信息了。
接下来我们修改一下服务中的代码
启动服务进行测试。
可以看到,直接 504 网关超时。
二、单独配置路由超时
我们除去配置全局的超时机制,还可以对某一个路由机制进行配置。
# 数据源配置
spring:
cloud:
gateway:
httpclient:
connect-timeout: 1000
response-timeout: 5s
routes:
- id: requestratelimiter_route
uri: http://localhost:3000/
predicates:
- Path=/normal/**
metadata:
response-timeout: 7000
connect-timeout: 2000
通过在路由中添加 metadata 进行配置。
在 metadata 中配置的两个内容是和全局配置的一样的,但是要注意单位,这里只能配置毫秒。
!!!单独给每个路由配置超时,优先走单独的,如果单独的没有配置,直接走全局超时机制。
测试:
下面我们只启动 Gateway 网关进行测试 connection-timeout。
这里主要看这个时间,全局我们配置的连接超时是 1 秒,但是这里 2 秒才进行错误返回,原因就是走的我们单独给这个路由配置的超时。
再来启动业务模块,再来进行请求。
同样,我们这里来看时间。全局配置中响应超时时间是 5 秒,但是这里我们用 6 秒进行返回,而且是正常服务返回,也就是说这里走的是单独配置。
这里要说一句:网关是最后的防线,我们因为微服务中还有断路器,所以网关的超时配置尽量要大于断路器的超时配置。
三、Gateway 跨域配置
之前在使用 SpringBoot + Vue 进行开发的时候,会遇到跨域配置,当时是配置到了 SpringBoot 中,但是现在我们是微服务,需要将这个跨域配置到整个网关中。
在没有配置跨域前请求是这样的,现在在 Gateway 中增加跨域配置。
spring:
cloud:
gateway:
globalcors:
cors-configurations:
'[/**]':
allowedOriginPatterns: "*"
allowCredentials: true
maxAge: 3600
allowedMethods:
- GET
- POST
- PUT
- HEAD
- DELETE
- OPTIONS
详细的配置参数意思:CorsConfiguration (Spring Framework 5.0.20.RELEASE API)
这里是参考我们之前 SpringBoot 中配置跨域进行修改的,然后重新启动 Gateway 服务,从新进行请求
可以看到,服务变成正常了。
这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com
更多推荐
所有评论(0)