GateWay网关使用API进行路由转发和限流

@Configuration
public class GateWayConfig {

    /**
     * 根据URL进行接口限流
     */
    @Bean
    public KeyResolver ipKeyResolver() {
        return exchange -> Mono.just(exchange.getRequest().getPath().value());
    }


    @Bean
    public RedisRateLimiter redisRateLimiter() {
    	//设置令牌桶每秒填充平均速率、令牌桶的最大容量
        return new RedisRateLimiter(10, 100);
    }

    @Bean
    public RouteLocator routes(RouteLocatorBuilder builder) {
        return builder.routes()
                //redirect_route是路由ID,保持唯一即可;拦截以/test/**开头的所有请求
                .route("redirect_route", r -> r.path("/test/**")
                        .filters(
                                f -> f.requestRateLimiter(config -> {
                                    //配置限流器
                                    config.setRateLimiter(redisRateLimiter());
                                    //配置限流规则
                                    config.setKeyResolver(ipKeyResolver());
                                })
                                        //重写路径,把test替换成service
                                        .rewritePath("/test/(?<segment>.*)", "/service/$\\{segment}")
                                        .modifyResponseBody(String.class, String.class,
                                                (exchange, s) -> {
                                                    //TODO: 此处可以获取返回体的所有信息
                                                    System.out.println(s);
                                                    return Mono.just(s);
                                                })

                        )
                        //转发路径(lb表示从注册中心根据服务名获取服务路径转发,也可以直接配置IP和端口)
                        .uri("lb://service-produce"))
                .build();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值