Quartz 任务调度库,支持丰富的调度规则
以“每天早上六点半叫我起床”为例,“每天早上六点半”对应着 Trigger,“叫我起床”对应着 JobDetail,而:alarm_clock:对应着 Scheduler
首先,编辑 pom.xml 文件添加依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
然后,编辑 application.yml 文件添加配置:
spring: datasource: name: mysql driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://MYSQL_HOST:3306/app?useUnicode=true&characterEncoding=utf-8 username: USER password: PASS quartz: job-store-type: jdbc
属性 spring.quartz.job-store-type 定义了 JobStore 的类型,默认值为 memory 存储在内存中(易失),可选配置为 jdbc 存储在 spring.datasource 配置的数据源中(非易失)
最后,创建 JDBC 依赖的表
在 org.quartz.impl.jdbcjobstore 包下找到 tables_mysql_innodb.sql 文件,执行该 SQL 文件
Quartz 提供了构建器 TriggerBuilder 可以帮助我们方便得创建 Trigger 实例
Trigger 的几个关键属性:
ScheduleBuilder 有以下四个子类:
CalendarIntervalScheduleBuilder 定义了以秒、分钟、小时、天、周、月和年为周期的调度规则
withIntervalInSeconds(10); // 每 10 秒 withIntervalInDays(3); // 每 3 天
CronScheduleBuilder 定义了基于 Cron 表达式的调度规则
cronSchedule("0 */10 * ? * *"); // 每 10 分钟
这里有一个在线生成 Cron 表达式的网站,可以参考: CronMaker
TODO
TODO
Quartz 提供了构建器 JobBuilder 可以帮助我们方便得创建 JobDetail 实例
使用 spring-boot-starter-quartz 通过依赖注入即可使用 Scheduler,看:point_down:的:chestnut::
@Autowired private Scheduler scheduler;
如果想修改 Quartz 属性,可以通过修改 application.yaml 的 spring.quartz.properties 实现,详细配置参数,参考: Quartz 2.2.x Configuration Reference