
调用接口限速150/分钟
实现代码:
项目调用的接口存在访问速率限制,为防止无意义的消耗,用此代码限制本地调用速率。
package com.adc.da.jydata.util;
import com.adc.da.util.exception.AdcDaBaseException;
import com.google.common.util.concurrent.RateLimiter;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestRateLimiter {
private static final RateLimiter rateLimiter = RateLimiter.create(150.0 / 60); // 设置速率为150次/分钟
public static String goEpcByCode(String apiCode) {
System.out.println("请求接口:goEpcByCode");
String returnData = null;
try {
// 获取速率限制许可,阻塞直到获得允许
rateLimiter.acquire();
returnData = getData(apiCode);
System.out.println(returnData);
} catch (Exception e) {
System.out.println("接口" + apiCode + "调用出现异常,信息为:" + e.getMessage());
}
return returnData;
}
private static String getData(String apiCode) {
// 打印当前时间,精确到时分秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(new Date());
System.out.println("当前时间: " + currentTime);
// 实际的HTTP请求逻辑
return "";
}
public static void main(String[] args) {
// 示例调用
for(int i = 0; i < 1000; i++){
System.out.println("第" + i + "次调用");
goEpcByCode("test");
}
}
}
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果