2

我正在使用 Sling 的调度程序来安排定期作业,我想知道我是否正在安排作业 A 每 5 分钟运行一次。在不太可能的情况下,作业开始运行并耗时超过 5 分钟会发生什么情况?我已指定作业不能并行运行。

  1. 作业 A 将在前一次运行完成后立即再次运行。
  2. 作业 A 将在前一次运行完成后 5 分钟运行。

在底层,Sling 的调度程序使用的是 QuartzScheduler,所以如果你知道 QuartzScheduler 在这种情况下的表现,请也分享你的知识。

任何帮助深表感谢!

4

1 回答 1

1

在 Quartz Scheduler 2.1.x 中,注解 DisallowConcurrentExecution用于防止同一个 Job 的并发执行。

在 Quartz Scheduler 2.0.x 中,为了使 Job 的并发执行无效,您必须实现StatefulJob 接口

是否在前一个作业完成时执行失败的执行或将被忽略取决于触发器的失败策略。默认情况下,当调度程序启动时,它会搜索任何未触发的持久触发器,然后根据其单独配置的不触发指令更新每个触发器。

因此,在我看来,作业 A 将在上一次运行完成后立即再次运行。我想 Sling 使用默认的失火策略。否则答案取决于失火策略选择。

这就是 Quartz Scheduler 的工作原理。我不知道 Sling 的调度程序是如何工作的。

我希望这有帮助。

于 2012-09-04T19:02:59.290 回答