首页 > 解决方案 > Quartz Scheduler集群:有没有办法唯一地运行SAME作业并延迟下一次触发直到同一个作业完成

问题描述

我已经用一个 jdbcstore 实现了 Quartz Scheduler 集群。

我有一个工作 QzJob1,它是每两分钟安排一次的 CRON。但作业运行总执行时间为 3 分钟。

我知道节点将根据可用的触发时间来获取作业。

所以让我们说,QzJob1 于上午 10:00 在 NODE1 中运行,但它在上午 10:03 完成。现在对于同一个作业,触发器在上午 10:02 可用,它被另一个节点 NODE2 拾取。这是我知道的默认行为。

现在我的问题是。有没有办法让这个在所有节点上都是唯一的,这样在该作业完成之前它不会再次被触发,尽管触发器在完成之前已经准备好。

我试图找出它,但无法到达任何地方。因此,请指导/指导/指向我,以便我将其推进。

感谢帮助。

标签: javaspringquartz-scheduler

解决方案


您需要使用 @DisallowConcurrentExecution 注释来注释您的作业实现类。有关详细信息,请参阅https://www.quartz-scheduler.org/api/2.1.7/org/quartz/DisallowConcurrentExecution.html


推荐阅读