SpringBoot | 第二十二章:定时任务的使用
前言 上两章节,我们简单的讲解了关于异步调用和异步请求相关知识点。这一章节,我们来讲讲开发过程也是经常会碰见的定时任务。比如每天定时清理无效数据、定时发送短信、定时发送邮件、支付系统中的定时对账等等,往往都会定义一些定时器,进行此业务的开发。所以,本章节介绍下在 SpringBoot 中定时任务如何使用及一点分布式定时服务的思考总结。 一点知识 在 JAVA 开发领域,目前可以通过以下几种方式进行定时任务: Timer:jdk中自带的一个定时调度类,可以简单的实现按某一频度进行任务执行。提供的功能比较单一,无法实现复杂的调度任务。 ScheduledExecutorService:也是jdk自带的一个基于线程池设计的定时任务类。其每个调度任务都会分配到线程池中的一个线程执行,所以其任务是并发执行的,互不影响。 Spring Task: Spring 提供的一个任务调度工具,支持注解和配置文件形式,支持 Cron 表达式,使用简单但功能强大。 Quartz:一款功能强大的任务调度器,可以实现较为复杂的调度功能,如每月一号执行、每天凌晨执行、每周五执行等等,还支持分布式调度,就是配置稍显复杂。 题外话:对于 Quartz ,早前用过1.6版本的,更新到2.x及以上版本后基本没怎么接触了,原来还有倒腾过结合 Kettle 做了一些动态的定时抽取数据啥的还编写过一个 Cron 表达式编辑器