基于Guava中令牌筒算法com.google.common.util.concurrent.RateLimiter实现的方法级别限流器工具, 项目以来guava和spring, 通过spring注解的方式来使用
bifrost依赖spring, 在本地classpath:props目录下添加limiter.properties配置:
default.isLimit=true # 默认是否限流, 可以把default改成方法的key, 精确控制每个方法
default.premitsPreSecond=1024 # 默认发送速度, 可以把default改成方法的key, 精确控制每个方法
然后在需要限流方法上添加bifrost注解@Limiter, 注解参数:
| param | description |
|---|---|
| key | 可选参数, 方法限流器key, 可以通过key在配置文件中配置是否限流和限流器令牌发送速度 |
| permits | 可选参数,方法需要的令牌个数,默认值为1 |
| limitType | 可选参数, 限流方式, 可选项为WAIT和RETURN, WAIT表示如果筒中没足够的令牌则阻塞等待, RETURN表示如果筒中没足够的令牌则直接返回, 默认限流方式为RETURN |
| code | 必输参数, 被限流的请求的返回码 |
| codeField | 可选参数, 设置返回码的字段, 默认为code |
| message | 必输参数, 被限流的请求的返回信息 |
| messageField | 可选参数, 设置返回信息的字段, 默认为message |