我们有一个要求,如果该作业面临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;
}
}