中断石英群集中的作业

我有一个具有多个实例的Quartz设置,并且我希望在作业执行的任何位置中断该作业。正如文档中所说,Scheduler.interrupt()方法不支持集群,因此我正在寻找一些常见的实践来克服这种限制。


解决方案

好的,这里有一些您应该用来实现此目的的基本知识。

在集群模式下运行时,有关当前运行的作业的信息显示在石英表中。例如,q_fired_triggers包含正在执行的作业。 该表的第一列是负责该表的调度程序名称。因此,很容易知道谁在做什么。

然后,如果您启用Quartz实例的JMX导出org.quartz.scheduler.jmx.export,那么您将启用一个新的入口点来分别远程管理每个调度程序。MBean提供方法boolean interruptJob("JobName", "JobGroup")

然后您"只是"需要在相应的计划程序实例上调用此方法才能有效地中断它。

我手动尝试了所有流程,运行正常,只需自动化:)

HIH

相关文章