调度作业在集群上执行两次
我们使用 Cron4j java 调度程序来调度每晚执行的作业。现在,当在客户端站点的集群(2 个节点)上部署(Tomcat)相同的 Web 应用程序时,作业会运行两次。有什么办法可以避免这个问题吗?
We are using Cron4j java scheduler for scheduling jobs which execute every night. Now, when this same web application is deployed(Tomcat) on cluster(2 nodes) at the client's site the jobs run twice. Is there any way to avoid this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我相信做到这一点的唯一方法是使用一些外部共享状态(例如在数据库中)来提供一些锁定。
I believe the only way of doing this would be to use some external shared state, like in a database for example, to provide some locking.
使用 Shedlock 库,非常简单
Use Shedlock library, it's very simple
解决这个问题的方法之一是让您的 Web 应用程序接受一个参数,例如
runCronjobs
。您可以将相关条目放入web.xml
或其他配置文件中。因此,一个 Web 应用程序会将此值设置为
true
,而其他部署会将其设置为false
。One of the ways to solve it would be to make your webapp to accept a parameter, e.g.
runCronjobs
. You could put relevant entry inweb.xml
or in some other configuration file.So one webapp would have this value set to
true
and other deployments would have it set tofalse
.