Springboot集成任务调度实现过程
一任务调度基本介绍
任务调度器就是按照规定的计划完成任务;比如windows,linux的自带的任务调度系统功能;平常开发中也就是按照规定的时间点轮询执行计划任务(比如每周三的凌晨进行数据备份),或者按时间隔触发一次任务调度(比如每3小时执行一次定时抓拍);
二corn表达式介绍
2.1位数介绍
如果有用过quartz的读者肯定了解cron时钟周期计划;下面是cron对应位数的说明,其中第七位年份通常忽略,第四位跟第六位同时表达会有歧义,通常只表达具体的一位,另一位使用?表示解决冲突;
位数 | 说明 |
---|---|
第一位 | second(0-59) |
第二位 | minute(0-59) |
第三位 | hour(0-23) |
第四位 | dayofmonth(1-31) |
第五位 | month(1-12) |
第六位 | dayofweek(1-7)1是周日,7是周六 |
第七位 | year(1970-2099) |
2.2占位符说明
占位符 | 说明 |
---|---|
* | 表示任意时刻 |
? | dayofmonth或者dayofweek |
- | 表示范围 |
/ | 表示间隔 |
, | 表示枚举 |
L | 表示最后dayofmonth或者dayofweek |
W | 表示有效工作日(1-5)dayofmonth |
# | 表示第几个星期几dayofweek |
LW | 表示某月最后一个工作日 |
2.3常用cron举例
corn | 说明 |
---|---|
003**? | 每月每天凌晨3点触发 |
0031*? | 每月1日凌晨3点触发 |
003?*WEN | 星期三中午12点触发 |
003?*MON-FRI | 周一至周五凌晨3点触发 |
00/58**? | 每天7点至7:55分每隔5分钟触发一次 |
010,208**? | 每天的8点10分,8点20分触发 |
001-3**? | 每天的1点至三点每小时触发一次 |
008L*? | 每月最后一天的8点触发 |
01012?*6#3 | 每月的第三个星期五的12:10分触发 |
01012?*6L2022 | 表示2022年每月最后一个星期五10:22分触发 |
三使用cron进行任务调度
3.1依赖
org.springframework.boot spring-boot-starter-web
3.2具体corn任务调度计划
在@Scheduled注解中自定义cron调度计划;将注解用在需要进行调度的方法上
/** *@Authorlsc *@Description *@Date2019/11/1122:23 */ @Service publicclassPlainService{ @Scheduled(cron="30****?") publicvoidcronScheduled(){ System.out.println("关注作者博客和公众号,不定期分享原创文章"); } }
3.3启动类
启动类需要加上@EnableScheduling表示开启任务调度;
/** *@Authorlsc *@Description任务调度启动类
*@Date2019/11/1122:20 */ @SpringBootApplication //开启任务调度 @EnableScheduling publicclassScheduledApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(ScheduledApplication.class,args); } }
四Scheduled中其它方式进行任务调度
4.1fixedDelay
每隔3000毫秒执行一次,必须是上次调度成功后3000毫秒;
@Scheduled(fixedDelay=3000) publicvoidfixedDelayScheduled(){ System.out.println("thedaynice"); }
4.2fixedRate
每个3000毫秒执行一次,无论上次是否会执行成功,下次都会执行;
@Scheduled(fixedRate=3000) publicvoidfixedRateScheduled(){ System.out.println("thenightnice"); }
4.3initialDelay
initialDelay表示初始化延迟1000毫秒后,执行具体的任务调度,之后按照fixedRate进行任务调度;
@Scheduled(initialDelay=1000,fixedRate=3000) publicvoidinitialDelayStringScheduled(){ System.out.println("thenightnice"); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。