您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

SpringBoot动态管理定时任务的实现代码

2024/4/26 8:39:25发布5次查看
本篇文章给大家带来的内容是关于springboot动态管理定时任务的实现代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
springboot动态管理定时任务首先使用@enablescheduling 开启定时任务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); }}
配置日志级别logging.level.com= debuglogging.file=springboot-scheduled.log
固定周期定时任务package com.fighting;import org.slf4j.logger;import org.slf4j.loggerfactory;import org.springframework.scheduling.annotation.scheduled;import org.springframework.stereotype.component;/** * spring静态周期定时任务 * * @author fighting * @date 2018-09-11 */@componentpublic class springstaticcrontask { public static final logger logger = loggerfactory.getlogger(springstaticcrontask.class); @scheduled(cron = "0/5 * * * * ?") public void staticcorntask() { logger.debug("staticcrontask is running..."); }}
动态修改定时周期实现schedulingconfigurer 接口,重写 configuretasks方法
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;/** * 动态定时任务 * * @author fighting * @date 2018-09-11 */@componentpublic class springdynamiccrontask implements schedulingconfigurer { private static final logger logger = loggerfactory.getlogger(springdynamiccrontask.class); private static string cron = "0/5 * * * * ?"; @override public void configuretasks(scheduledtaskregistrar scheduledtaskregistrar) { scheduledtaskregistrar.addtriggertask(() -> { // 任务逻辑 logger.error("dynamiccrontask is running..."); }, triggercontext -> { // 任务触发,在这里可修改任务的执行周期,因为每次调度都会执行这里 crontrigger crontrigger = new crontrigger(cron); return crontrigger.nextexecutiontime(triggercontext); }); } public springdynamiccrontask() { //模拟业务修改周期,可以在具体业务中修改参数cron new thread(() -> { try { thread.sleep(15000); } catch (interruptedexception e) { e.printstacktrace(); } cron = "0/2 * * * * ?"; }).start(); }}
观察打印结果,周期变了,但是项目没有重启。
2018-09-11 13:36:50.009 debug 16708 --- [pool-1-thread-1] com.fighting.springstaticcrontask : staticcrontask is running...2018-09-11 13:36:50.010 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:36:55.001 debug 16708 --- [pool-1-thread-1] com.fighting.springstaticcrontask : staticcrontask is running...2018-09-11 13:36:55.002 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:37:00.009 debug 16708 --- [pool-1-thread-1] com.fighting.springstaticcrontask : staticcrontask is running...2018-09-11 13:37:00.016 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:37:05.016 debug 16708 --- [pool-1-thread-1] com.fighting.springstaticcrontask : staticcrontask is running...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 running...2018-09-11 13:37:08.008 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:37:10.002 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:37:10.003 debug 16708 --- [pool-1-thread-1] com.fighting.springstaticcrontask : staticcrontask is running...2018-09-11 13:37:12.002 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:37:14.006 error 16708 --- [pool-1-thread-1] com.fighting.springdynamiccrontask : dynamiccrontask is running...2018-09-11 13:37:15.015 debug 16708 --- [pool-1-thread-1] com.fighting.springstaticcrontask : staticcrontask is running...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 running...
相关推荐:
springboot 调度任务及常用任务表达式
通过reidis管理定时任务
以上就是springboot动态管理定时任务的实现代码的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录