gpt4 book ai didi

java - 使用Java绝对每秒发送15条记录作为api请求

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:01 26 4
gpt4 key购买 nike

我想知道如何向其他api发送多个请求并每隔一秒更新我们数据库的响应状态,让发送请求的TPS = 15。我使用了Timer和ScheduleExecutorService,如下所示。但两者都不支持周期性地每1秒发送15个请求。有时它效果很好,每秒 requests = 15 。有时只有 requests = 13 在 11:04:01 和 requests = 17 在 11:04:02。通过查看秒数,在 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);

这是附件日志文件的屏幕截图。 mismatch and merge records in next second log screenshot in each second

最佳答案

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();
}
}

关于java - 使用Java绝对每秒发送15条记录作为api请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51038500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com