//创建一个ipKeyResolver 给用户IP套壳 注解@Bean给springboot 容器管理 @Bean(name="ipKeyResolver") public KeyResolver keyResolver(){ return new KeyResolver() { @Override public Mono<String> resolve(ServerWebExchange exchange) { //1.获取请求request对象 ServerHttpRequest request = exchange.getRequest(); //2.从request中获取ip地址 String hostString = request.getRemoteAddress().getHostString();//Ip地址 //3.返回 return Mono.just(hostString); } }; }
routes: - id: goods_route uri: lb://goods predicates: - Path=/api/goods/** filters: - StripPrefix=1 - name: RequestRateLimiter #请求数限流 名字不能随便写 ,使用默认的facatory args: key-resolver: "#{@ipKeyResolver}" redis-rate-limiter.replenishRate: 1 #每秒 redis-rate-limiter.burstCapacity: 1 #每秒最多请求1个
#Redis配置 redis: host: port: