This article gives you the content is about the springboot dynamic management of the implementation of the task of the Code, there is a certain reference value, the need for a friend can refer to, I hope you have some help.
Springboot dynamic management of Scheduled tasks
Start a scheduled task using @enablescheduling first
Package Com.fighting;import Org.springframework.boot.springapplication;import Org.springframework.boot.autoconfigure.springbootapplication;import Org.springframework.scheduling.annotation.EnableScheduling, @SpringBootApplication @enableschedulingpublic class scheduledapplication {public static void Main (string[] args) { Springapplication.run ( Scheduledapplication.class, args);} }
Configuring Logging Levels
Logging.level.com= Debuglogging.file=springboot-scheduled.log
Fixed-cycle timing tasks
Package Com.fighting;import Org.slf4j.logger;import Org.slf4j.loggerfactory;import Org.springframework.scheduling.annotation.scheduled;import org.springframework.stereotype.component;/** * Spring Static Cycle Timer Task * * @author Fighting * @date 2018-09-11 */@Componentpublic class Springstaticcrontask {public static F inal Logger Logger = Loggerfactory.getlogger (springstaticcrontask.class); @Scheduled (cron = "0/5 * * * * *?") public void Staticcorntask () { logger.debug ("Staticcrontask is running ...");} }
Dynamic modification of timing cycles
Implementing the Schedulingconfigurer interface, overriding the Configuretasks method
Package Com.fighting;import Org.slf4j.logger;import Org.slf4j.loggerfactory;import Org.springframework.scheduling.annotation.schedulingconfigurer;import Org.springframework.scheduling.config.scheduledtaskregistrar;import Org.springframework.scheduling.support.crontrigger;import org.springframework.stereotype.component;/** * Dynamic timed task * * @author Fighting * @date 2018-09-11 */@Componentpublic class Springdynamiccrontask implements Schedulingconfigurer {PR Ivate static final Logger Logger = Loggerfactory.getlogger (Springdynamiccrontask.class); private static String cron = "0/5 * * * *?"; @Override public void Configuretasks (Scheduledtaskregistrar scheduledtaskregistrar) {Scheduledtaskregistrar.add Triggertask ((), {//Task logic Logger.error ("Dynamiccrontask is running ..."); }, Triggercontext, {///task trigger, where you can modify the execution cycle of a task, because each schedule will be executed here Crontrigger Crontrigger = new Crontrigg ER (cron); Return CRONTRIGGER.NEXTEXECUTiontime (Triggercontext); }); } public Springdynamiccrontask () {///simulate the business modification cycle, you can modify the parameters in the specific business cron New Thread ((), {try { Thread.Sleep (15000); } catch (Interruptedexception e) {e.printstacktrace (); } cron = "0/2 * * * * *?"; }). Start (); }}
The
observes the print result, the period changes, but the item does not restart.
2018-09-11 13:36:50.009 DEBUG 16708---[pool-1-thread-1] com.fighting.SpringStaticCronTask:staticCronTask is run Ning ... 2018-09-11 13:36:50.010 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:36:55.001 DEBUG 16708---[pool-1-thread-1] com.fighting.SpringStaticCronTask:staticCronTask is run Ning ... 2018-09-11 13:36:55.002 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:00.009 DEBUG 16708---[pool-1-thread-1] com.fighting.SpringStaticCronTask:staticCronTask is run Ning ... 2018-09-11 13:37:00.016 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:05.016 DEBUG 16708---[pool-1-thread-1] com.fighting.SpringStaticCronTask:staticCronTask is run Ning ... 2018-09-11 13:37:05.016 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask : Dynamiccrontask is running ... 2018-09-11 13:37:06.013 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:08.008 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:10.002 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:10.003 DEBUG 16708---[pool-1-thread-1] com.fighting.SpringStaticCronTask:staticCronTask is run Ning ... 2018-09-11 13:37:12.002 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:14.006 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ... 2018-09-11 13:37:15.015 DEBUG 16708---[pool-1-thread-1] com.fighting.SpringStaticCronTask:staticCronTask is run Ning ... 2018-09-11 13:37:16.012 ERROR 16708---[pool-1-thread-1] Com.fighting.SpringDynamicCronTask:dynamicCronTask is running ... 2018-09-11 13:37:18.002 ERROR 16708---[pool-1-thread-1] com.fighting.SpringDynamicCronTask:dynamicCronTask is RU Nning ...