动态修改定时任务时间

@Component
public class Scheduling implements SchedulingConfigurer {
	protected final static Logger logger = LoggerFactory.getLogger(Scheduling.class);
	
        @Autowired
	HealthCheck healthCheck;
	
        public static String cron;

	public Scheduling() {
		cron = "0/30 * * * * *";
	}

	public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
		Runnable task = new Runnable() {
			public void run() {
                                //这里面写逻辑
                                 healthCheck.check();
				logger.debug("healthCheck is running ..."+ cron );
			}
		};
		Trigger trigger = new Trigger() {
			public Date nextExecutionTime(TriggerContext triggerContext) {
				

                                Integer i = (Integer) healthCheck.cacheMap.get("count");
				if (i == 0) {
					cron = "0/90 * * * * ? ";
				}
				if (i == 1) {
					cron = "0/240 * * * * ? ";
				}
				if (i == 2) {
					cron = "0/30 * * * * ? ";
				}
				// 任务触发,可修改任务的执行周期.
				CronTrigger trigger = new CronTrigger(cron);
				Date nextExec = trigger.nextExecutionTime(triggerContext);
				return nextExec;
			}
		};
		taskRegistrar.addTriggerTask(task, trigger);
	}

}

猜你喜欢

转载自blog.csdn.net/u012040869/article/details/79878053