SpringBoot构建微服务实战 之 整合Quartz

前言

本节我们将学习使用SpringBoot+Mybatis整合Quartz。首先在学习使用SpringBoot整合quartz之前,我们需要知道quartz的工作原理以及配置:quartzquartz GitHub

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。
Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。


概要

Quartz 定义了五种触发器:SimpleTrigger,CronTirgger,DateIntervalTrigger,NthIncludedDayTrigger和CalendarTirgger( org.quartz.Calendar)。 常用的 Tirgger 是 CronTirgger &CalendarTirgger。本节我们将以CronTirgger为例子。

  • Quartz内部表结构和关系
    SpringBoot构建微服务实战 之 整合Quartz
    本着为保证系统的易扩张性,我建议我们在DB中将以上表全部建完并且设置好表关系。当然Cluster中 Quartz是需要完整的表和表关联关系的,就本例子或者比较Simple Aplication中可以不需要完整的表和表关系,本节中我们使用到了表:qrtz_cron_triggersqrtz_job_detailsqrtz_locksqrtz_scheduler_stateqrtz_triggers
    SpringBoot构建微服务实战 之 整合Quartz

实例

首先我们选择了CronTrigger,那么我们就应该此类触发器是需要一个必须条件的:
jobDetail(调度任务)+trigger(触发器)=scheduler。并且总的设计思路是:项目启动时,从数据库 sys_job 中查询出我们需要执行的任务,然后逐个的把每个job配上trigger交由scheduler统一调度。然后每执行一个job记录执行日志。