我们有一个要求,如果该作业面临Java异常,则需要重新触发Quartz作业,最大可达5倍。

但是,当我们尝试从主要Exception调用这些方法之一时

JobExecutionException je;
je.refireImmediately();
je.setRefireImmediately(true);


重新点火不会发生。

使用的石英版本是1.7.3

请协助。

最佳答案

您已经接近了,但是您需要重新抛出新创建的异常。该代码在2.1.6中有效,但在1.X中,您可能需要在JobDataMap中手动增加/存储重新触发计数。

try {
    whatever();
} catch (Exception e) {
    // Retry this job up to 5 times.
    if (context.getRefireCount() < 4) {
        logger.warn("job_failure attempt={}", context.getRefireCount());
        throw new JobExecutionException(e, true);
    } else {
        throw e;
    }
}

10-08 13:08