java quartz在第一次异常后停止计划

时间:2016-11-17 09:48:01

标签: java quartz-scheduler

我有一份石英工作:

public class GlobalIdleMonitorJob extends AbstractJob {

    @Override public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try {
            getJobService().processUserIdle();
        }catch(Exception e){
            getLogger().error("GlobalIdleMonitorJob",e);
        }
    }
}

此作业每X秒运行一次。我希望这项工作在第一次失败后停止。换句话说,如果

getJobService().processUserIdle();

抛出一个异常,我希望这个工作不再运行,只有在手动重启或web应用服务器重启后才能运行。我应该在catch块中抛出一个特殊的异常或者如何配置它吗?

2 个答案:

答案 0 :(得分:1)

您可以将JobExecutionException类对象的setUnscheduleAllTriggers方法设置为true(true)。请参考官方石英网站上的以下附件,供您参考。

- documentation

答案 1 :(得分:0)

在你的catch区块中,你可以取消安排这样的工作:

try {
   getJobService().processUserIdle();
} catch(Exception e) {
   scheduler.unscheduleJob(triggerKey) 
   getLogger().error("GlobalIdleMonitorJob",e);
}

如果您的应用中没有任何其他触发器或工作,您只需拨打scheduler.clear(),但如果您可能在此处添加新的工作或触发器,这可能不是一个好主意。将来