我们正在使用Cron4j java调度程序来安排每晚执行的作业。现在,当在客户端站点的集群(2个节点)上部署(Tomcat)相同的Web应用程序时,作业将运行两次。有什么方法可以避免这个问题吗?
答案 0 :(得分:2)
我认为这样做的唯一方法是使用一些外部共享状态(例如在数据库中)来提供一些锁定。
答案 1 :(得分:0)
使用Shedlock库,这很简单
@Scheduled(...)
@SchedulerLock(name = "scheduledTaskName")
public void scheduledTask() {
}
答案 2 :(得分:-1)
解决问题的方法之一是让您的网络应用程序接受参数,例如: runCronjobs
。您可以在web.xml
或其他配置文件中放入相关条目。
因此,一个webapp将此值设置为true
,其他部署将其设置为false
。