1. 程式人生 > 其它 >快速配置spring cloud gateway-redis令牌桶訪問限制功能

快速配置spring cloud gateway-redis令牌桶訪問限制功能

匯入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
    <version>2.1.3.RELEASE</version>
</dependency>

在啟動類中配置KeyResolver

可以另外定義一個配置類存放

@Bean
    public KeyResolver myKeyResolver() {
        return new KeyResolver() {
            @Override
            public Mono<String> resolve(ServerWebExchange exchange) {
            	//通過獲取它的主機名進行訪問限制(還有很多種方式)
                return Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
            }
        };
    }

在配置檔案新增引數

application.yml
全域性訪問限制

default-filters:
  - name: RequestRateLimiter 
    args:
      redis-rate-limiter.replenishRate: 2 #令牌桶每秒填充平均速率
      redis-rate-limiter.burstCapacity: 2 #令牌桶總容量

如果想對單個路由進行限制,則在其後新增過濾器並配置即可.