8

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

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

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

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

有没有办法解决这个问题?也许这个替代方案不适合我们的目的?

谢谢!

4

2 回答 2

6

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

于 2013-10-29T16:32:25.763 回答
-1

@kungfuters 解决方案当然是一个更好的最终目标,但作为一个简单的第一个实现,您可以使用属性来启用/禁用任务,并且只让任务在其中一个服务器上运行。

于 2013-10-29T17:02:24.437 回答