Springboot自带定时任务实现动态配置Cron参数

Springboot自带定时任务实现动态配置Cron参数

2023年7月21日发(作者:)

Springboot⾃带定时任务实现动态配置Cron参数同学们,我今天分享⼀下SpringBoot动态配置Cron参数。场景是这样⼦的:后台管理界⾯对定时任务进⾏管理,可动态修改执⾏时间,然后保存⼊库,每次任务执⾏前从库⾥查询时间,以达到动态修改Cron参数的效果。好,咱们⼀起来看看是怎么回事。1. Timer:这是java⾃带的类,这个类允许你调度⼀个ask任务。使⽤这种⽅式可以让你的程序按照某⼀个频度执⾏,但不能在指定时间运⾏。⼀般⽤的较少。2. ScheduledExecutorService:也jdk⾃带的⼀个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的⼀个线程去执⾏,也就是说,任务是并发执⾏,互不影响。3. Spring Task:Spring3.0以后⾃带的task,可以将它看成⼀个轻量级的Quartz,⽽且使⽤起来⽐Quartz简单许多。4. Quartz:这是⼀个功能⽐较强⼤的的调度器,可以让你的程序在指定时间执⾏,也可以按照某⼀个频度执⾏,配置起来稍显复杂。这是让你按照固定的频率去执⾏⼀个任务,不能指定时间。和timer类似我们主要讲解它的动态配置使⽤⽅法。在刚开始使⽤的时候,我们更改⼀个任务的执⾏时间,⼀般是这样的:修改定时任务的执⾏周期,把服务停下来,改下任务的cron参数,再重启服务就搞搞定了。这种⽅式很简单,没有可说的,但是有没有⼀种可能,在不停服务的情况下,就可以动态的修改任务的cron参数呢?那是必须有!

刚刚提到的⽅法⾥,我们在主类上⾯加@EnableScheduling注解,在任务⽅法前⾯加上@Scheduled(cron=“0/5 * * * * *”)注解定义执⾏时间,但是动态配置的步骤就有点不⼀样:因为是要任务执⾏⼀次的时候才会去修改时间的cron表达式,所以改了cron后,要在下下次任务执⾏时才会⽣效。

这⾥核⼼的主要是使⽤到了ScheduledTaskRegistrar这个类有⼀个⽅法addTriggerTask(Runnable,Trigger) 两个参数,⼀个Runnable,⼀个是Trigger,在Runnable中执⾏业务逻辑代码,在Trigger修改定时任务的执⾏周期。在SpringBoot版本是2.0.0以后的,则在spring-boot-starter中已经包含了quart的依赖,则可以直接使⽤spring-boot-starter-quartz依赖,如果是低于2.0.0版本的,需要额外添加quartz的依赖。

⾄于具体的使⽤⽅法,⼤家有兴趣的可以去深⼊了解。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689929456a295177.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信