java 中的定时任务quartz,已整合到spring中,如何动态调整任务的触发时间,以下是知识点:
/**
* 修改 creatRptTrigger 定义的运行时间
*/
public void setReptTime(String cronEx){
try{
TriggerKey triggerKey = TriggerKey.triggerKey("creatRptTrigger", Scheduler.DEFAULT_GROUP);
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
//表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder
//防止定时器立即触发,开始时间从现在开始计时
.cronSchedule(cronEx).withMisfireHandlingInstructionDoNothing();
//按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
//按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
}catch(Exception ex){
ex.printStackTrace();
}
}
网友评论