我有一个包含多个实例的Quartz设置,我想在任何执行的地方中断作业。正如在文档中所说,Scheduler.interrupt()
方法不是群集感知的,所以我正在寻找一些通用的做法来克服这种限制。
答案 0 :(得分:2)
嗯,这里有一些你应该用来实现的基础知识。
在群集模式下运行时,石英表中提供了有关当前正在运行的作业的信息。例如,q_fired_triggers
包含正在执行的作业。
该表的第一列是负责它的调度程序名称。所以很容易知道谁在做什么。
然后,如果启用石英实例org.quartz.scheduler.jmx.export
的JMX导出,则MBean将启用新的入口点以单独远程管理每个调度程序。 MBean提供了方法boolean interruptJob("JobName", "JobGroup")
然后你“只是”需要在适当的调度程序实例上调用此方法以有效地中断它。
我手动尝试了所有这些过程并且工作正常,只需要自动化:)
HIH