java - 使用 Java 绝对每秒发送 15 条记录作为 api 请求
问题描述
我想知道如何向其他 api 发送多个请求并每隔一秒将响应状态更新到我们的数据库,让发送请求为 TPS = 15。我同时使用了 Timer 和 ScheduleExecutorService,如下所示。但两者都不支持每 1 秒定期发送 15 个请求。有时它运作良好 requests = 15 in every second 。有时在 11:04:01 中只有请求 = 13,在 11:04:02 中只有请求 = 17。通过查看秒数,在 11:04:01 我要发送的是 15 条记录,实际上它发送了 13 条记录,差异是 2 条记录。所以,另一个 11:04:02 ,剩下的 2 条记录达到了这一秒,总记录变为 15+2 = 17 条记录。所以,请帮我解决这个问题,我应该使用哪个技术或库,而不是同时使用 Timer 和 ScheduledExecutorService。
Timer timer = new Timer();
timer.schedule(new sendRequest(), 0, 1000);
/////////////////////////////////////
ScheduledExecutorService executor =
Executors.newSingleThreadScheduledExecutor();
Runnable periodicTask = new Runnable() {
public void run() {
// Invoke method(s) to do the work
doPeriodicWork();
}
};
executor.scheduleAtFixedRate(periodicTask, 0, 1, TimeUnit.SECONDS);
这是附件日志文件截图。 每秒日志截图中的不匹配和合并记录
解决方案
public class SendTPS extends TimerTask {
public static void main(String[] args){
int maxTPS = 15;
Timer timer = new Timer();
int maxSleepInterval = Math.round((1000 / maxTPS));
timer.schedule(new SendTPS(), 0, maxSleepInterval);
}
public static void fetchData(){
System.out.println(new SimpleDateFormat("HH:mm:ss").format(new
java.util.Date())+"fetch data....");
}
public void run() {
fetchData();
}
}
推荐阅读
- vba - Excel SUM 公式在 VBA 数小时内不起作用
- php - 如何使用 DOMparser 使用 getNamedItem 解析 url
- excel - 协助慢速 VBA
- windows - 有人可以解释 Windows ZwMapViewOfSection 系统调用,以便菜鸟(我)可以理解吗?
- python - 使用 py2app 编译并包含 boto3 时,应用程序在启动时崩溃
- blockchain - make: *** 没有规则来制作目标“install_abci”。停止
- vb.net - 如何运行具有不同 CommandFlags 值的函数?
- html - 无法添加css切换到html
- android - 我无法插入表格
- python - Mayavi 无法正确渲染实体表面