Java对API接口进行限流

package com.shuixian.jianghao.utils;

import com.google.common.util.concurrent.RateLimiter;

public class LimitUtil {

    //每秒发出100个令牌,限制并发量为100
    private static RateLimiter rateLimiter=RateLimiter.create(100);

    public static boolean tryAcquire(){
        return rateLimiter.tryAcquire();
    }
}

还要引入依赖包:

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

用的时候,可以把这个限流工具类声明成Bean,然后注入到控制器中,处理请求之前先调用方法获取令牌,如果获取到了就继续进行请求,否则驳回,达到限流的目的。

或者也可以配置一个全局拦截器,在拦截器中获取令牌,获取不到返回false,中断请求,同时返回错误信息,提示用户。

猜你喜欢

转载自blog.csdn.net/wzy18210825916/article/details/89384461