具有多个服务器的计划任务 - 单点责任

Urb*_*leg 7 cron spring tomcat scheduled-tasks

我们有一个Spring + JPA Web应用程序.我们使用两个运行这两个应用程序并使用相同数据库的tomcat服务器.

我们的应用程序要求之一是执行cron \计划任务.

经过短暂的研究,我们发现spring框架为cron作业提供了一个非常直接的解决方案,(基于注释的解决方案)

然而,由于两个tomcats运行相同的webapp - 如果我们将使用这个spring的解决方案,我们将创建一个非常有问题的场景,其中2个crons同时运行(每个在不同的tomcat上)

有什么方法可以解决这个问题吗?也许这个替代方案对我们的目的不利?

谢谢!

Mat*_*ter 5

作为一般规则,您将要保存设置以指示作业正在运行.类似于"Spring Batch"的技巧,您可能希望在数据库中创建一个表来存储作业执行.您可以根据需要选择实现此目的,但最终,您的计划任务应检查数据库以查看是否已在运行相同的任务,如果没有,则继续执行任务.任务完成后,适当更新数据库,以便将来执行.