使用guava RateLimiter限流
场景:第三方api调用时,避免第三方服务因并发调用数过高挂掉
下面测试例子
private static final RateLimiter rateLimiter =RateLimiter.create(3.0);
public static void main(String[] args) {
for (int i =0; i <30; i++) {
new Thread(() -> {
// System.out.println(currentThread().getName() + "我开始执行了");
System.out.println(send(currentThread().getName()));
}).start();
}
}
public static String send(String message) {
rateLimiter.acquire();
return sendd(message);
}
public static String sendd(String message) {
return "发送消息:{" + message +"}成功!" +DateUtil.getNow();
}
网友评论