java guava限流,Guava的RateLimiter实现接口限流

最近开发需求中有需要对后台接口进行限流处理,整理了一下基本使用方法。

首先添加guava依赖:

com.google.guava

guava

23.0

然后封装RateLimiter适用对多接口的限制:

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

import org.springframework.util.StringUtils;

import java.util.concurrent.ConcurrentHashMap;

import java.util.concurrent.TimeUnit;

public class RateLimiterFactory {

private static ConcurrentHashMap limiterMap = new ConcurrentHashMap<>();

//每秒许可证数量

private static double permitsPerSecond = 1000;

//等待超时时间

private static long timeout = 4L;

/**

*@param apiId 对应接口的id

*@description 获取许可

*/

public static boolean tryAcquire(String apiId) {

//如果传入apiId为空则返回true

if (StringUtils.isEmpty(apiId)) {

return true;

}

limiterMap.putIfAbsent(apiId, RateLimiter.create(permitsPerSecond));

return limiterMap.get(apiId).tryAcquire(timeout, TimeUnit.SECONDS);

}

}

使用RateLimiterFactory实现对接口的限制:

@Controller

public class TestController {

...

@RequestMapping("/test")

@ResponseBody

public String test(){

if(!RateLimiterFactory.tryAcquire(ApiInfo.TEST)) {

return "当前请求数过高!";

}

...

}

}

以上就是RateLimiter实现接口限流的常见使用,头一次发文,mark一下。

作者:堕落门徒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑系统重装后没有声音怎么办​

电脑系统重装后没有声音怎么办&#xff0c;下面与大家分享下系统重装后没有声音怎么解决的教程。 1 第一步 鼠标右键单击此电脑&#xff0c;选择管理进入页面&#xff0c;单击设备管理器&#xff0c;展开声音、视频和游戏控制器&#xff0c;查看设备是否有问号&#xff0c;如果…

模糊聚类划分matlab代码,Matlab协同模糊聚类建模

%本程序实现了把协同模糊聚类算法和G-K算法相结合,构建T-S模型%并用该模型对数据进行测试%输入数据:%ytrain:训练数据的实际输出,是一个列向量%xtrain:训练数据矩阵,分为两组,每组的每行代表一个特征.每组特征不同%ytest:测试数据的实际输出,是一组列向量%xtest:测试数据矩阵,其…

php并发取源码,PHP读取大文件源码示例-Swoole多进程读取大文件

PHP读取大文件源码示例&#xff0c;通过PHP读取过大、超大型文件的思路及解决方案。在日常读取文件时&#xff0c;若文件 不是很大&#xff0c;通常使用file_get_contents,将内容一次性载入的变量中&#xff0c;也可以远程加载网页或者远端文件。若加载超过PHP限制的内存大小&a…

QQ如何设置会话窗默认使用腾讯视频播放视频文件

小编给大家整理了大量腾讯视频的使用方法和问题解决办法&#xff0c;这篇文章依然非常有价值&#xff0c;如果你遇到“QQ如何设置会话窗默认使用腾讯视频播放视频文件”方面的问题&#xff0c;赶紧看看吧。腾讯视频播放器推荐精准&#xff0c;越用越懂你&#xff0c;分秒就能计…

mysql 定期备份策略,MySQL--3--mysqldump备份策略

参考地址&#xff1a;http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/database-administration.html#backup-strategy-example5.9 备份策略在my.inf中启动二进制日志&#xff0c;用--log-bin[file_name]选项启动时&#xff0c;mysqld写入包含所有更新数据的SQL命令的日…

兔弟弟和月亮婆婆

有一天晚上&#xff0c;兔弟弟不想睡觉。他要去找小青蛙玩。兔妈妈摇摇头说&#xff1a;“乖孩子&#xff0c;睡觉吧。明天早些起来&#xff0c;找小青蛙玩去!” 兔弟弟不听妈妈的话&#xff0c;他说&#xff1a;“我要去&#xff0c;我要去&#xff0c;我不要睡觉!”兔妈妈不…

matlab问题利用M文件比较两个数大小,Matlab中写M文件及调用

1题、自然数n的阶乘function ylilu_fact(n)nfloor(n);%如果是小数,向下取整至整数y1;if n>1 %这里负数,0的阶乘都将得到1for i1:nyy*i;endend2题、n中取m的组合function ylilu_cnm(n,m)y1;if (n>m && n>0 & m>0)mmin(n-m,m);for i1:myy*(n-i1)/i;ende…

小老鼠艾尔的新毯子

今天分享一则非常暖心的故事《小老鼠艾尔的新毯子》最开心的事不是拥有什么宝贝&#xff0c;而是因为你的行动让别人开心&#xff0c;那才是最大的快乐。 小老鼠艾尔有一次在外出的时候&#xff0c;捡到一条漂亮的毛毯&#xff0c;实际上那是一个小姑娘的袜子&#xff0c;是她…

matlab 展开多项式,matlab中freqz的用法以及多项式的展开

对于一个变量a&#xff0c;matlab中定义需要这样 syms a&#xff1b;定义之后就可以写由变量组成的式子&#xff0c;比如 c(1a^-1)^5;可以用expand(c) 就能把c展开成多项式&#xff0c;每一项的系数就可以看到。freqz的用法MATLAB提供了专门用于求离散系统频响特性的函数freqz(…

IE11浏览器一个窗口打开多个页面设置方法

ie1166760一个窗口打开多个页面设置方法 IE11浏览器怎么设置一个窗口打开多个页面?一般新系统安装好了以后&#xff0c;默认的ie浏览器一个窗口都只能打开一个页面&#xff0c;一旦页面打开的多了的话&#xff0c;就会很卡&#xff0c;拖慢电脑的运行速度&#xff0c;而且整个…

php 如何模拟浏览器,利用php的curl扩展进行模拟浏览器访问网页

我们一般要抓取一个网站的静态页面来完成我们的需求&#xff0c;其实在这里面有很多种方式可以完成&#xff0c;php内置函数file_get_contents();file();readfile();都可以进行网页抓取&#xff0c;但是这种方式毕竟是有很大局限性的&#xff0c;例如我们要访问一个需要登录的网…

如何用极路由新插件【搜狐视频】进行远程下载

本文播放器家园网小编给大家分享如何用极路由新插件【搜狐视频】进行远程下载&#xff0c;如果大家在使用搜狐视频过程当中遇到类似问题&#xff0c;欢迎阅读本文!此外&#xff0c;在搜狐视频视频播放器上观看更流畅&#xff0c;画质更清晰&#xff0c;拒绝卡慢钝&#xff0c;而…

php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc

php转java 系列2 Spring boo 链接数据库jdbcJDBC首先创建一个新项目&#xff0c;在创建项目时要注意导入依赖&#xff0c;在项目创建成功后就会看到在 pom.xml 文件中找到&#xff0c;但是如果在创建项目的时候没有导入&#xff0c;就要在pom.xml中手动的添加依赖&#xff1b;o…

edge浏览器下载位置设置在哪里设置

edge66760下载位置设置在哪里设置 edge浏览器下载位置设置在哪?很多Win10用户要求微软为Edge浏览器增加下载位置设置选项&#xff0c;那么win10 Edge浏览器的默认下载位置在哪里修改?怎么修改?在Windows10的反馈应用中&#xff0c;很多用户都反映Edge浏览器没有自定义下载位…

Python使用训练数据拟合模型

# 假设“满意度”是因变量&#xff0c;其他的是自变量 # 提取自变量&#xff08;特征&#xff09;和因变量&#xff08;目标&#xff09; X df_filtered_cleaned[[Bonus, Enhancement, Time_in_seconds]] y df_filtered_cleaned[Satisfaction] # 分割为训练集和测试集。 …

php连接excel表格数据类型,TP5 中使用PHPExcel 导出导入数据到excel表格

将下载好的PHPExcel文件夹放置在框架中的Vendor目录下&#xff0c;注意目录的结构&#xff0c;按照我的代码来基本上直接引用就能使用&#xff0c;如下图&#xff1a;导出数据代码如下//导出数据表 开始public function product(){$listdb(product)->select();vendor("…

PPTV网络电视如何修复浏览器支持异常

这篇文章主要说的是PPTV网络电视如何修复66760支持异常&#xff0c;希望可以帮助大家。pptv播放器是一款专注视频播放的客户端软件&#xff0c;免费下载安装&#xff0c;观看高清正版影视&#xff0c;可在线享受pptv播放器网站内全部免费高清正版视频&#xff0c;是最个性化、时…

oracle导致的负载高,Oracle 11g 数据库服务器CPU、IO负载高的故障排除流程

使用top查看负载高的进程~ [OSMSRDB]$ toptop - 11:02:43 up 12 days, 17:15, 4 users, load average: 1.50, 0.93, 0.36Tasks: 363 total, 1 running, 362 sleeping, 0 stopped, 0 zombieCpu(s): 1.2%us, 0.3%sy, 0.0%ni, 68.4%id,30.1%wa, 0.0%hi, 0.0%si, 0.0…

母狼高斯普和狐狸

《母狼高斯普和狐狸》母狼生了一只小狼&#xff0c;于是请来狐狸当教父。她说&#xff1a;“总之&#xff0c;狐狸是我们的近亲&#xff0c;见多识广而且头脑聪明;它能教好我儿子&#xff0c;帮他在世界上生存。” 狐狸装得很诚实地说&#xff1a;“亲爱的高司普太太&#xff…

oracle在线中文文档,Oracle TopLink

12.4.4. 事务管理将事务管理纳入到Service操作的执行中&#xff0c;你可以使用Spring通用的声明式的事务管理功能&#xff0c;参加下面的例子&#xff1a;xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…