首页 > 其他分享 >使用 aop + guava 为 springboot 应用做限流

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

时间:2022-12-06 04:33:18浏览次数:43  
标签:springboot cc 限流 aop guava public rateLimiter

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, "请求次数过多,看会番吧亲");
        }
    }

}

标签:springboot,cc,限流,aop,guava,public,rateLimiter
From: https://www.cnblogs.com/acdongla/p/16954123.html

相关文章