1、Quartz的简介
**Quartz**是一个完全由java编写的开源作业调度框架,由**OpenSymphony**组织开源出来的。所谓作业调度其实就是按照程序的设定,某一时刻或者时间间隔去执行某个代码。
2、在pom文件引入如下依赖
<!-- SpringBoot整合Quartz依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
3、基础配置,在 application.yml文件中进行Quartz 的配置(相关属性),如下所示:
详细介绍:
job-store-type:使用数据库来存储quartz的任务
initialize-schema: 项目启动的时候是否初始化表数据
scheduler-name: 定时器名称
startup-delay:延时启动定时任务(避免系统未完全启动却开始执行定时任务的情况)
auto-startup:是否自动启动定时任务
wait-for-jobs-to-complete-on-shutdown:是否等待任务执行完毕后,容器才会关闭
overwrite-existiong-jobs:配置的job是否覆盖已存在的JOB信息
4、配置完毕,系统启动完后,会在数据库生成如下表:
4.1、qrtz_blob_triggers:以Blob类型存储的触发器
- sched_name:调度器名称
- trigger_name:触发器名称
- trigger_group:触发器组
- blob_data:Blob数据
4.2、qrtz_calendars:存放日历信息,quartz可配置一个日历来指定一个时间范围
- sched_name:调度器名称
- calendar_name:日历名称
- calendar:日历值
4.3、qrtz_cron_triggers:存放cron类型的触发器
- sched_name:调度器名称
- trigger_name:触发器名称(qrtz_blob_triggers表trigger_name的外键)
- trigger_group:触发器组(qrtz_blob_triggers表trigger_group的外键)
- cron_expression:cron表达式
- time_zone_id:时区id
4.4、qrtz_fired_triggers:存放已触发的触发器
- sched_name:调度器名称
- entry_id:入口id
- trigger_name:触发器名称
- trigger_group:触发器组
- instance_name:实例名称
- fired_time:触发时间
- sched_time:调度时间
- priority:优先级
- state:状态 job_name:任务名称
- job_group:任务组
- is_nonconcurrent:非同时性的
- requests_recovery:请求回收
4.5、qrtz_job_details:存放一个jobDetail信息
- sched_name:调度器名称
- job_name:任务名称
- job_group:任务组
- description:描述
- job_class_name:job实现类的完全包名,quartz就是根据根据这个路径到classpath找到该job类
- is_durable:是否持久化(0、否,1、是)
- is_nonconcurrent:非同时性的
-
is_update_data:是否更新数据
- requests_recovery:请求回收
-
job_data:blob字段,存放持久化job对象
4.6、qrtz_locks:存储程序的悲观锁的信息(假如使用了悲观锁)
- sched_name:调度器名称
- lock_name:锁名称
4.7、qrtz_paused_trigger_graps:存放暂停掉的触发器
- sched_name:调度器名称
- trigger_group:触发器组
4.8、qrtz_scheduler_state:调度器状态 (存储所有节点的scheduler,会定期检查scheduler是否失效)
- sched_name:调度器名称
- instance_name:实例名称
- last_checkin_name:上次登记时间
- checkin_interval:登记间隔时间
4.9、qrtz_simple_triggers:简单触发器的信息
- sched_name:调度器名称
- trigger_name:触发器名称
- trigger_group:触发器组
- repeat_count:重复次数
- repeat_interval:重复间隔
- times_triggered:触发次数
4.10、qrtz_simprop_triggers:存储 CalendarIntervalTrigger 和 DailyTimeIntervalTrigger两种类型的触发器
- sched_name:调度器名称
- trigger_name:触发器名称 (qrtz_triggers表trigger_name的外键)
- trigger_group:触发器组(qrtz_triggers表trigger_group的外键)
- str_prop_1:String类型的trigger的第一个参数
- str_prop_2:String类型的trigger的第二个参数
- str_prop_3:String类型的trigger的第三个参数
- int_prop_1:int类型的trigger的第一个参数
- int_prop_2:int类型的trigger的第二个参数
- long_prop_1:long类型的trigger的第一个参数
- long_prop_2:long类型的trigger的第二个参数
- dec_prop_1:decimal类型的trigger的第一个参数
- dec_prop_2:decimal类型的trigger的第二个参数
- bool_prop_1:boolean类型的trigger的第一个参数
- bool_prop_2:boolean类型的trigger的第二个参数
4.11、qrtz_triggers:触发器的基本信息
- sched_name:调度器名称
- trigger_name:触发器名称
- trigger_group:触发器组
- job_name:任务名称(qrtz_job_details表job_name的外键)
- job_group:任务组(qrtz_job_details表job_group的外键)
- description:描述
- next_fire_time:下次触发时间
- prev_fire_time:上次触发时间
- priority:优先级
- trigger_state:当前trigger状态,设置为ACQUIRED,如果设置为WATING,则job不会触发
- trigger_type:trigger类型,CRON表达式
- start_time:开始时间
- end_time:结束时间
- calendar_name:日历名称
- misfire_instr:措施或者是补偿执行的策略
- job_data:blob字段,存放持久化job对象