一尘不染

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

tomcat

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

我们的应用程序要求之一是执行cron \ Scheduled任务。

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

但是,由于两个tomcat都运行同一个Web应用程序-
如果我们将使用今年spring的解决方案,则将创建一个非常有问题的场景,其中2个cron同时运行(每个都在不同的tomcat上)

有什么办法解决这个问题?也许这种选择对我们的目的不利?

谢谢!


阅读 348

收藏
2020-06-16

共1个答案

一尘不染

通常,您将要保存一个设置以指示作业正在运行。与“ Spring
Batch”的技巧类似,您可能希望在数据库中创建一个表,仅用于存储作业执行。您可以选择执行此操作,但是最终,计划的任务应检查数据库以查看是否已经运行了相同的任务,如果没有,则继续执行任务。任务完成后,请适当地更新数据库,以便将来可以执行。

2020-06-16