spring之quartz 定時任務cron時間動態改變

動態設置quartz定時任務的cron時間有:xml方式與數據庫表方式,並且這兩種方式在已有的定時任務上需增長大量的代碼及數據表,因此在網上找了一種比較簡單並且較爲實用的方法,但這樣的方式不夠智能,每次修改定時任務時間後,都須要從新啓動服務。若想自由控制項目中的定時任務執行可參考xx-job任務調度項目spring

動態設置quartz定時任務的cron時間是引用SchedulingConfigurer接口,並須要在實現類中增長註解@EnableScheduling。注:@EnableScheduling對Spring的版本要求比較高,spring版本須要使用4.2.5以上版本,如果低版本則沒法生效。數據庫

1.先在配置文件中設置定時任務執行時間ide

#執行時間格式設置
conTestTime:0/20 * * * * ?

2.編寫任務執行類日誌

@Component
@EnableScheduling
public class QuertzJobTask implements SchedulingConfigurer {
    private static final Logger log = LoggerFactory.getLogger(QuertzJobTask.class);
    //讀取配置文件中設置時間
    @Value("${conTestTime}")
    String indSchedulerJobTime;


    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        scheduledTaskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
                // 執行任務邏輯
                log.info("執行時間  :"+indSchedulerJobTime);
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                // 任務觸發,可修改任務的執行週期
                CronTrigger trigger = new CronTrigger(indSchedulerJobTime);
                Date nextExec = trigger.nextExecutionTime(triggerContext);
                return nextExec;
            }
        });
    }
}

任務啓動後,能夠在控制檯上查看到其執行的任務打印出的日誌信息xml

相關文章
相關標籤/搜索