我有以下石英工作。我用它做了一些测试。
public void execute(JobExecutionContext context) throws JobExecutionException {
try {
Object result = callable.call();
} catch (Exception e) {
JobExecutionException e2 = new JobExecutionException(e);
if (REFIRE_IMMEDIATELY.equals(policy)) {
e2.setRefireImmediately(true);
} else if (UNSCHEDULE_ALL_TRIGGERS.equals(policy)) {
e2.setUnscheduleAllTriggers(true);
} else {
e2.setUnscheduleFiringTrigger(true);
}
throw e2;
}
}
但我无法完全理解 setUnscheduleAllTriggers
和 setUnscheduleFiringTrigger
之间的区别。不幸的是,没有Javadoc。
有人可以帮助我吗?
由于
答案 0 :(得分:6)
在石英中你可以有多个触发器解雇你的工作。如果作业执行失败的原因是触发器中固有的,您可能希望取消计划该特定触发器。这是我对setUnscheduleFiringTrigger(true)的理解。
如果问题出在作业本身而不是触发器上,那么每次执行都会失败,无论是谁或是什么启动它。因此,为了避免多次执行失败的麻烦,只是因为不同的触发器触发了作业,您可以使用setUnscheduleAllTriggers(true)来取消计划触发此作业的所有触发器,从而防止进一步执行错误的作业。
总结
setUnscheduleFiringTrigger
=>停止调用此特定作业的触发器setUnscheduleAllTriggers
=>停止调用此作业的所有触发器有关异常使用的示例,请参阅http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/examples/Example6.html。