【发布时间】:2021-12-03 05:15:26
【问题描述】:
我正在创建一个 maven 项目,作为 Elasticsearch 的插件安装。这个插件有 Quartz 调度程序,它实际上工作正常,直到我想停止它。它不会停止。在 Windows 上,它确实停止了。我已将作业实现为 InterruptableJob,当我调用“中断(键)”时,它只返回 false!所以,“deleteJob(key)”肯定不会起作用。有什么想法吗?
这是 InterruptableJob 的代码:
public class ReportJob implements InterruptableJob {
private ReportService rs = new ReportService();
boolean stopped = false;
public void execute(JobExecutionContext context) throws JobExecutionException {
SchedulerContext schedulerContext = null;
if(!stopped) {
try {
schedulerContext = context.getScheduler().getContext();
rs.start(schedulerContext);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
System.out.println("**************interrupting**************");
stopped = true;
}
}
这是我要中断和删除工作的原因:
System.out.println("interrupt: " + scheduler.interrupt(new JobKey(jobName, JOB_GROUP)));
System.out.println("deleteJob: " + scheduler.deleteJob(new JobKey(jobName, JOB_GROUP)));
【问题讨论】:
标签: java docker elasticsearch quartz-scheduler scheduler