1、引入依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.1-jre</version>
</dependency>
2、demo
@RequestMapping("/rateLimiter")
public class RateLimiterController {
// 每秒往桶里中放入一个令牌
private RateLimiter rateLimiter = RateLimiter.create(1.0);
@GetMapping("test")
public String testLimiter() {
// 500 毫秒内没有获取到令牌,就直接放弃获取进行服务降级处理
boolean getToken = rateLimiter.tryAcquire(500, TimeUnit.MILLISECONDS);
if (getToken) {
return "success";
}
return "系统繁忙,请稍后再试";
}
}
3、验证
通过实验结果,可以看到每秒只能成功一次,说明限流成功了!