博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 动态修改 Scheduled (系统启动默认执行,动态修改)
阅读量:4921 次
发布时间:2019-06-11

本文共 1490 字,大约阅读时间需要 4 分钟。

场景:可配置的 Scheduled 执行时间,正常的 Scheduled 是在项目启动的时候固定死的,没办法根据调用后台代码自动更新 Scheduled 执行时间

例如:系统启动 读取时间 Cron : 0 0 3 * * ? ,通过执行后台方法 可以动态配置 Cron 时间格式,并且清楚掉原本执行任务,执行新的设置定时任务时间

1、根据 ThreadPoolTaskScheduler 、ScheduledFuture 类 动态修改定时任务(ThreadPoolTaskScheduler 这个类 不能使用@Autowired ,直接定义成员变量 )

private ThreadPoolTaskScheduler threadPoolTaskScheduler;    private ScheduledFuture
future;

2、动态修改 Scheduled 后台方法逻辑(object 是 Runnable 实现类 需要执行的定时逻辑,放到run 线程方法内

threadPoolTaskScheduler = new ThreadPoolTaskScheduler();                threadPoolTaskScheduler.initialize();                if(future!=null){                    future.cancel(true);                }                future=threadPoolTaskScheduler.schedule(object,new CronTrigger("需要Cron时间格式字符串") );

以上逻辑 ----------------------- 就可以实现 动态 Scheduled 配置

以下逻辑 ----------------------- 配置项目启动 自动读取 DB Cron 设置定时

1、@Order 并实现 CommandLineRunner 类 重写方法 run

@Override    public void run(String... args) throws Exception {        logger.info("系统启动 默认设置对账任务 时间");        //获取目前DB 设置的对账时间        GetBillTimeResp time = systemConfigService.getTime();        //获取Cron时间格式字符串        String timeCron = billTimeCronFormat(time.getBillTime());        logger.info("时间为:"+timeCron);        //Scheduler 设置每天执行。。。        threadPoolTaskScheduler = new ThreadPoolTaskScheduler();        threadPoolTaskScheduler.initialize();        future=threadPoolTaskScheduler.schedule(object,new CronTrigger("DB Cron时间格式字符串")); }

 

转载于:https://www.cnblogs.com/yi1036943655/p/11511676.html

你可能感兴趣的文章
Oracle 11g: Flashback Data Archive
查看>>
MVC路由配置例
查看>>
某大型银行深化系统之十七:性能设计之二
查看>>
linux mysql-server can't find mysql_config
查看>>
php script 的生命周期
查看>>
Python的类(class)
查看>>
MFC启动和关闭线程
查看>>
JQuery EasyUI datagrid pageNumber 分页 请求/加载 两次
查看>>
.NET里面 abstract class和Interface有什么区别以及用法的展现?
查看>>
redis的数据持久化再讲 关于redisAOF RDB工作原理
查看>>
Docker官方tomcat镜像的使用
查看>>
3、DOM操作
查看>>
html自定义checkbox、radio、select —— checkbox、radio篇
查看>>
iDevice取证的一大突破
查看>>
java初学者笔记总结day4
查看>>
java泛型
查看>>
【优先队列】-HDU4546比赛难度
查看>>
操作系统简介
查看>>
正向代理--反向代理
查看>>
JavaScript实现多栏目切换效果
查看>>