setUnscheduleFiringTrigger

setUnscheduleFiringTrigger

我有以下石英工作。我用它做了一些测试。

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。

有人可以帮我吗?

谢谢

最佳答案

在石英中,您可以有多个触发器来触发您的工作。如果触发器执行任务失败的原因是固有的,则您可能要取消安排该特定触发器的时间。那就是我对setUnscheduleFiringTrigger(true)的理解。

如果问题出在工作本身而不是触发器上,那么它将在每次执行时失败,无论是谁启动的或由什么启动的。因此,为了避免多次执行失败的麻烦,仅因为不同的触发器触发了该作业,您可以使用setUnscheduleAllTriggers(true)取消调度触发该作业的所有触发器的时间,从而防止对该错误的作业进行任何进一步的执行。

所以总结一下

  • setUnscheduleFiringTrigger =>停止调用此特定作业运行的
  • 的触发器
  • setUnscheduleAllTriggers =>停止所有调用此作业的触发器

  • 有关Exception用法的示例,请参见http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/examples/Example6.html

    10-06 05:59