gpt4 book ai didi

java - 如何通过java监听新的数据库记录

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:44 24 4
gpt4 key购买 nike

目前我使用 while(true)Thread.sleep() 检查数据库中的新记录并执行 java 代码。

这是一个例子:

public class StartCommands implements Runnable{
private Active_Job activeJob;
Runnable execute_command;

public StartCommands(){
activeJobs = new Active_Job();
}

@Override
public void run(){
int jobId = 0;

while(true){
//access the db and get one row from the table by the status
jobId = activeJobs.get(Status.NEW);
if (jobId > 0){
activeJob.updateStatus(Status.INIT);
execute_command = activeJob.getCommand();

new Thread(execute_command).start();

activeJob = new Active_Job();
jobId = 0;
}

Thread.sleep(10*1000);
}
}
}

我在代码中很少有地方使用这种方法。但我不喜欢无限循环,每 10 秒检查一次新行。

所以我正在寻找的是某种监听器:一旦输入了新记录 - 执行 java 代码。一些 insert 从应用程序执行,有些则不是。

最佳答案

您使用的技术称为轮询。您正在检查新记录,等待一定时间,然后再次检查新记录。响应新记录的一种好方法可能是创建一个 Controller 来处理将新记录插入数据库并强制所有客户端(更新数据库记录的客户端)使用 Controller 来执行此操作。然后 Controller 可以在有新记录时提醒您。为了方便管制员发出警报,您可以设置一个网络服务,管制员可以在其中与您联系。

我说这“可能”是一个很好的方法,因为创建 Controller 和 Web 服务显然是额外的工作。但是,这会使轮询变得不必要。如果你想继续使用你的轮询技术,你可以创建一个服务(生产者)来进行轮询并用新结果填充队列。然后,您的其他程序(消费者)可以从队列中检索项目并对它们执行某些操作。

关于java - 如何通过java监听新的数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260593/

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