Schedule job executes twice on cluster
我们正在使用Cron4j Java调度程序来调度每晚执行的作业。 现在,当在客户端站点的群集(2个节点)上部署(Tomcat)相同的Web应用程序时,作业将运行两次。 有什么办法可以避免这个问题?
我相信这样做的唯一方法是使用某些外部共享状态(例如在数据库中)来提供一些锁定。
使用Shedlock库,非常简单
1 2 3 4 5 | @Scheduled(...) @SchedulerLock(name ="scheduledTaskName") public void scheduledTask() { } |
解决此问题的方法之一是使您的Web应用程序接受参数,例如
因此,一个Web应用程序会将其值设置为