java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot定时任务

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

作者:feifei97

这篇文章主要介绍了SpringBoot定时任务调度与爬虫的实现,使用webmagic开发爬虫,继承PageProcessor接口编写自己的处理类,process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑,具体实现配置过程跟随小编一起看看吧

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-59
Minutes, - * /0-59
Hours, - * /0-23
DayofMonth, - * / ? L W0-31
Month, - * /1-12
DayofWeek, - * / ? L #1-7或SUN-SAT

Cron格式中特殊字符说明

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

|在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" 每年三月的星期三的下午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 * * * * ?" 每分钟的15秒到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" 每个月第三周的星期四的10点15分0秒触发任务
"0 0 0 * * ?" 每天晚上12点触发任务

爬虫

使用webmagic开发爬虫

流程:

代码:

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

到此这篇关于SpringBoot定时任务调度与爬虫的实现的文章就介绍到这了,更多相关SpringBoot定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文