SpringBoot定时任务调度与爬虫的配置实现

网友投稿 303 2022-09-04


SpringBoot定时任务调度与爬虫的配置实现

SpringTask

SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用。

SpringTask的配置

在配置类中添加一个@EnableScheduling注解即可开启SpringTask的定时任务

import org.apache.commons.lang3.concurrent.BasicThreadFactory;

@Configuration

@EnableScheduling

@ComponentScan(basePackages = {"com.xxx.xxx"})

public class TaskConfig implements SchedulingConfigurer {

@Override

public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {

taskRegistrar.setScheduler(taskExecutor());

}

@Bean

public Executor taskExecutor() {

return new ScheduledThreadPoolExecutor(20, new BasicThreadFactory.Builder().namingPattern("Job-Thread-%d").build());

}

}

设置定时任务

@Component

@Slf4j

public class TaskJob {

/**

* @Scheduled 设置

*/

@Scheduled(cron = "0/10 * * * * ?")

public void job1() {

//具体处理逻辑

log.info("【job1】开始执行:{}", DateUtil.formatDateTime(new Date()));

}

}

Cron的语法格式及说明

Seconds Minutes Hours DayofMonth Month DayofWeek

时间元素可出现的字符有效数值范围Seconds, - * /0-59Minutes, - * /0-59Hours, - * /0-23DayofMonth, - * / ? L W0-31Month, - * /1-12DayofWeek, - * / ? L #1-7或SUN-SAT

Cron格式中特殊字符说明

字符作用举例,列出枚举值在Minutes域使用5,10,表示在5分和10分各触发一次

|表示触发范围| 在Minutes域使用5-10,表示从5分到10分钟每分钟触发一次

|匹配任意值| 在Minutes域使用*, 表示每分钟都会触发一次/ |起始时间开始触发,每隔固定时间触发一次| 在Minutes域使用5/10,表示5分时触发一次,每10分钟再触发一次? |在DayofMonth和DayofWeek中,用于匹配任意值| 在DayofMonth域使用?,表示每天都触发一次

|在DayofMonth中,确定第几个星期几| 1#3表示第三个星期日

L |表示最后| 在DayofWeek中使用5L,表示在最后一个星期四触发W |表示有效工作日(周一到周五)| 在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次

使用举例

"0 0 10,14,16 * * ?" 每天上午10点,下午2点,4点

"0 0/30 9-17 * * ?" 朝九晚五工作时间内每半小时

"0 0 12 ? * WED" 表示每个星期三中午12点

"0 0 12 * * ?" 每天中午12点触发

"0 15 10 ? * *" 每天上午10:15触发

"0 15 10 * * ?" 每天上午10:15触发

"0 15 10 * * ? *" 每天上午10:15触发

"0 15 10 * * ? 2005" 2005年的每天上午10:15触发

"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发

"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发

"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发

"0 10,44 14 ? 3 WED" 每年三月http://的星期三的下午2:10和2:44触发

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发

"0 15 10 15 * ?" 每月15日上午10:15触发

"0 15 10 L * ?" 每月最后一日的上午10:15触发

"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

"30 * * * * ?" 每半分钟触发任务

"30 10 * * * ?" 每小时的10分30秒触发任务

"30 10 1 * * ?" 每天1点10分30秒触发任务

"30 10 1 20 * ?" 每月20号1点10分30秒触发任务

"30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务

"30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务

"30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务

"30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务

"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务

"15-45 * * * * ?" 15到45秒内,每秒都触发任务

"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次

"15-30/5 * * * * ?" 每分钟的15HLDfscVT秒到30秒之间开始触发,每隔5秒触发一次

"0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次

"0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务

"0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务

"0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务

"0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务

"0 15 10 ? * 5#3" 每HLDfscVT个月第三周的星期四的10点15分0秒触发任务

"0 0 0 * * ?" 每天晚上12点触发任务

爬虫

使用webmagic开发爬虫

流程:

(1)分析目标网页源码(2)继承PageProcessor接口编写自己的处理类,process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑(3)继承Pipeline接口编写自己的存储类

代码:

https://github.com/FlyuZ/Spring-Learning


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【WSN通信】Matlab实现低能耗自适应聚类层次结构协议
下一篇:python 函数 定位参数 关键字参数 inspect模块(python编程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~