如何中断或停止当前正在运行的石英作业?

我有一些任务是在Java Quartz Jobs的帮助下执行的,但是我需要通过代码中的某些条件来停止某些任务。我读到这可以通过可中断的工作来完成。但是我不明白我应该以什么方式做到这一点?


答案 1

您需要编写作业作为可中断作业的实现。要中断此作业,您需要将句柄连接到调度程序,然后调用interrupt(jobKey<<job name & job group>>)

请看一下 @javadoc 上面的类,石英分布也包含一个示例(示例7)。


答案 2

在带有弹簧的Quartz 2.1中,您可以:

@Autowired
private Scheduler schedulerFactoryBean; //injected by spring
...
...

List<JobExecutionContext> currentlyExecuting = schedulerFactoryBean.getCurrentlyExecutingJobs();

//verifying if job is running       
for (JobExecutionContext jobExecutionContext : currentlyExecuting) {
    if(jobExecutionContext.getJobDetail().getKey().getName().equals("JobKeyNameToInterrupt")){
        result = schedulerFactoryBean.interrupt(jobExecutionContext.getJobDetail().getKey());
    }
}

推荐