我正在使用Quartz来安排Java作业。 调度程序无限重复。 如果Job.class中发生某个异常,我需要关闭调度程序。 如何让Job通知调度类shutdown()?
谢谢, RayK
答案 0 :(得分:1)
Quartz的工作是通过调用他们的execute(JobExecutionContext)
方法来运行的。此JobExecutionContext
对象使用getScheduler()
方法访问正在运行您作业的Scheduler
。
所以你可以这么做:
class YourJob implements Job {
//...
@Override
public void execute(final JobExecutionContext context) throws JobExecutionException {
//...
if (someCondition) {
try {
context.getScheduler().shutdown();
} catch (SchedulerException e) {
// log or rethrow!
}
}
//...
但是,我不确定在运行工作的过程中关闭调度程序是个好主意。你为什么要那样做?如果您要做的就是停止某项工作再次运行,那么只需unschedule就可以了:
取消安排工作的特定触发器:
// Unschedule a particular trigger from the job (a job may have more than one trigger) scheduler.unscheduleJob(triggerKey("trigger1", "group1"));
删除作业并取消调度其所有触发器
scheduler.deleteJob(jobKey("job1", "group1"));