计划作业在群集上执行两次

时间:2011-05-10 11:06:14

标签: java tomcat cluster-computing scheduler

我们正在使用Cron4j java调度程序来安排每晚执行的作业。现在,当在客户端站点的集群(2个节点)上部署(Tomcat)相同的Web应用程序时,作业将运行两次。有什么方法可以避免这个问题吗?

3 个答案:

答案 0 :(得分:2)

我认为这样做的唯一方法是使用一些外部共享状态(例如在数据库中)来提供一些锁定。

答案 1 :(得分:0)

使用Shedlock库,这很简单

@Scheduled(...)
@SchedulerLock(name = "scheduledTaskName")
public void scheduledTask() {

}

答案 2 :(得分:-1)

解决问题的方法之一是让您的网络应用程序接受参数,例如: runCronjobs。您可以在web.xml或其他配置文件中放入相关条目。

因此,一个webapp将此值设置为true,其他部署将其设置为false