一、Quartz的存储和持久化
1、存储机制
Quartz 用 JobStores 对 Job、Trigger、calendar 和 Schduler 数据提供一种存储机制。
Scheduler 应用已配置的JobStore 来存储和获取到部署信息,并决定正被触发执行的 Job 的职责。
所有的关于哪个 Job 要执行和以什么时间表来执行他们的信息都来存储在 JobStore。
2、存储类型
内存(非持久化) 存储
持久化存储
3、JobStore 接口
(1)、作用
所有的Job存储机制,不管是在哪里或是如何存储他们的信息的,都必须实现这个接口。
(2)、JobStore 接口的 API 分类
Job 相关的 API
Trigger 相关的 API
Calendar 相关的 API
Scheduler 相关的 API
4、内存(非持久化) JobStore
(1)、org.quartz.simple.RAMJobStore
a、作用
使用内存来存储 Scheduler 信息 , 是 Quartz 的默认的解决方案。
b、优势
RAMJobStore是配置最简单的 JobStore:默认已经配置好了。见 quartz.jar:org.quartz.quartz.properties
RAMJobStore的速度非常快。所有的 quartz存储操作都在计算机内存中
5、持久化 JobStore
(1)、组成
持久化 JobStore = JDBC + 关系型数据库
(2)、org.quartz.impl.jdbcjobstore.JobStoreSupport 类
Quartz 所有的持久化的 JobStore 都扩展自 JobStoreSupport 类。
(3)、JobStoreSupport实现类
a、每一个设计为针对特定的数据库环境和配置
b、org.quartz.impl.jdbcjobstore.JobStoreTX
类设计为用于独立环境中。这里的 "独立",我们是指这样一个环境,在其中不存在与应用容器的事务集成。
c、org.quartz.impl.jdbcjobstore.JobStoreCMT
类设计为与程序容器事务集成,容器管理的事务(Container Managed Transactions (CMT))
d、JobStore 配置
#properties配置
org.quartz.jobStore.class = org.quartz.ompl.jdbcjobstore.JobStoreTX
(4)、数据库结构 -- 表名描述
QRTZ_CALENDARS ---> 以 Blob 类型存储 Quartz 的 Calendar 信息
QRTZ_CRON_TRIGGERS ---> 存储 Cron Trigger,包括 Cron 表达式和时区信息
QRTZ_FIRED_TRIGGERS ---> 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
QRTZ_PAUSED_TRIGGER_GRPS ---> 存储已暂停的 Trigger 组的信息
QRTZ_SCHEDULER_STATE ---> 存储少量的有关 Scheduler 的状态信息,和别的 Scheduler 实例(假如是用于一个集群中)
QRTZ_LOCKS ---> 存储程序的悲观锁的信息(假如使用了悲观锁)
QRTZ_JOB_DETAILS ---> 存储每一个已配置的 Job 的详细信息
QRTZ_JOB_LISTENERS ---> 存储有关已配置的 JobListener 的信息
1、存储机制
Quartz 用 JobStores 对 Job、Trigger、calendar 和 Schduler 数据提供一种存储机制。
Scheduler 应用已配置的JobStore 来存储和获取到部署信息,并决定正被触发执行的 Job 的职责。
所有的关于哪个 Job 要执行和以什么时间表来执行他们的信息都来存储在 JobStore。
2、存储类型
内存(非持久化) 存储
持久化存储
3、JobStore 接口
(1)、作用
所有的Job存储机制,不管是在哪里或是如何存储他们的信息的,都必须实现这个接口。
(2)、JobStore 接口的 API 分类
Job 相关的 API
Trigger 相关的 API
Calendar 相关的 API
Scheduler 相关的 API
4、内存(非持久化) JobStore
(1)、org.quartz.simple.RAMJobStore
a、作用
使用内存来存储 Scheduler 信息 , 是 Quartz 的默认的解决方案。
b、优势
RAMJobStore是配置最简单的 JobStore:默认已经配置好了。见 quartz.jar:org.quartz.quartz.properties
RAMJobStore的速度非常快。所有的 quartz存储操作都在计算机内存中
5、持久化 JobStore
(1)、组成
持久化 JobStore = JDBC + 关系型数据库
(2)、org.quartz.impl.jdbcjobstore.JobStoreSupport 类
Quartz 所有的持久化的 JobStore 都扩展自 JobStoreSupport 类。
(3)、JobStoreSupport实现类
a、每一个设计为针对特定的数据库环境和配置
b、org.quartz.impl.jdbcjobstore.JobStoreTX
类设计为用于独立环境中。这里的 "独立",我们是指这样一个环境,在其中不存在与应用容器的事务集成。
c、org.quartz.impl.jdbcjobstore.JobStoreCMT
类设计为与程序容器事务集成,容器管理的事务(Container Managed Transactions (CMT))
d、JobStore 配置
#properties配置
org.quartz.jobStore.class = org.quartz.ompl.jdbcjobstore.JobStoreTX
(4)、数据库结构 -- 表名描述
QRTZ_CALENDARS ---> 以 Blob 类型存储 Quartz 的 Calendar 信息
QRTZ_CRON_TRIGGERS ---> 存储 Cron Trigger,包括 Cron 表达式和时区信息
QRTZ_FIRED_TRIGGERS ---> 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
QRTZ_PAUSED_TRIGGER_GRPS ---> 存储已暂停的 Trigger 组的信息
QRTZ_SCHEDULER_STATE ---> 存储少量的有关 Scheduler 的状态信息,和别的 Scheduler 实例(假如是用于一个集群中)
QRTZ_LOCKS ---> 存储程序的悲观锁的信息(假如使用了悲观锁)
QRTZ_JOB_DETAILS ---> 存储每一个已配置的 Job 的详细信息
QRTZ_JOB_LISTENERS ---> 存储有关已配置的 JobListener 的信息