使用 aop + guava 为 springboot 应用做限流

1. 引入 guava 依赖

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>

编写切面类

对 所有的controller 都做了限流

@Component
@Aspect
public class GlobalAspect {
	
    /// QPS 为 3
    private RateLimiter rateLimiter= RateLimiter.create(3);

    @Pointcut("execution(* cc.library.main.controller..*.*(..))")
    public void pc() {}


    @Before("cc.library.main.aspect.GlobalAspect.pc()")
    public void before() throws Throwable {

        boolean flag = rateLimiter.tryAcquire();

        if (!flag) {
            throw new LibraryException(R.ERROR, "请求次数过多,看会番吧亲");
        }
    }

}

本文作者:yangruomao

本文链接:https://www.cnblogs.com/yangruomao/p/16954123.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yangruomao  阅读(78)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起