我有一个 Spring Boot 应用程序,它有一个调度程序,每天凌晨 2 点将数据插入远程数据库。
@Scheduled(cron = "0 0 2 * * ?")
public void reportDataToDB() {
// code omitted
}
问题是,应用程序在多台计算机上运行,因此数据库会收到多个重复的数据插入。
解决这个问题的惯用方法是什么?
最佳答案
我们通过使用中央调度程序解决了这样的问题。在我们的例子中,我们使用 Rundeck,然后它调用我们服务上的 URL(通过负载均衡器),然后执行任务(在我们的例子中是数据清理)。这样您就可以确保逻辑仅在服务的一个实例上执行。
关于java - 仅从多台机器向数据库报告一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52696966/