【问题标题】:Scheduled tasks with multiple servers - single point of responsibility具有多台服务器的计划任务 - 单点责任
【发布时间】:2013-11-08 20:20:10
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

标签: spring tomcat cron scheduled-tasks


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2011-02-18
      • 2016-02-10
      • 2010-09-28
      相关资源
      最近更新 更多