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

问题描述 投票:5回答:3

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

java tomcat cluster-computing scheduler
3个回答
2
投票

我相信这样做的唯一方法是使用某些外部共享状态,例如在数据库中,以提供一些锁定。


0
投票

使用Shedlock库,非常简单

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

}

-1
投票

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

因此,一个Web应用程序会将其值设置为true,而其他部署会将其值设置为false

© www.soinside.com 2019 - 2024. All rights reserved.