<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
filed:
public static final int REQUEST_COUNT = 5;//每秒5个令牌
private static final RateLimiter rateLimiter = RateLimiter.create(REQUEST_COUNT);
method:
if (!rateLimiter.tryAcquire()) {//尝试获取,如果获取不到返回false
return "系统繁忙,请稍后重试";
}
注意:令牌桶只能单机.
如果集群模式可以使用redis,key值是时间精确到秒,每次自增,然后比较当前值和设定值.