【第18章】Spring Cloud之Gateway配置


前言

我们可以通过官方提供的配置,让我们的系统更加地灵活和健壮。


一、示例

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

总结

回到顶部
更多配置请查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值