使用 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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步