admin管理员组文章数量:1794759
springboot实现schedule任务的动态开关和控制
Application类上加@EnableScheduling注解。 DynamicTask类代码:
@RestController @RequestMapping("/task") public class DynamicTask { private static String DEFAULT_CRON = "0/5 * * * * ?"; @Autowired private ThreadPoolTaskscheduler threadPoolTaskScheduler; private ScheduledFuture<?> future; @Bean public ThreadPoolTaskScheduler threadPoolTaskScheduler() { return new ThreadPoolTaskScheduler(); } @RequestMapping("/startCron") public String startCron() { future = threadPoolTaskScheduler.schedule(new MyRunnable(), new CronTrigger(DEFAULT_CRON)); System.out.println("start cron"); return "startCron"; } @RequestMapping("/stopCron") public String stopCron() { if (future != null) { future.cancel(true); } System.out.println("stop cron"); return "stopCron"; } @RequestMapping("/changeCron10") public String changeCron10() { stopCron();// 先停止,在开启. future = threadPoolTaskScheduler.schedule(new MyRunnable(), new CronTrigger("*/10 * * * * *")); System.out.println("changeCron10"); return "changeCron10"; } private class MyRunnable implements Runnable { @Override public void run() { System.out.println("run ," + new Date()); } } }启动项目,一开始是没有计划任务的。
localhost:8080/task/startCron 启动任务,5秒执行一次 localhost:8080/task/stopCron 停止任务,不再执行了 localhost:8080/task/changeCron10 修改任务,10秒执行一次
其他 如何实现分布式呢手动控制schedule开关确实很不错,比修改配置文件,再重启方便许多。 本来想集成到项目中,但是突然发现个问题,分布式情况下,如何让开关控制到每个项目?
本文标签: 动态SpringBootschedule
版权声明:本文标题:springboot实现schedule任务的动态开关和控制 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686477397a71888.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论