目录
引言
在 Quartz 的集群模式中,调度器依赖于数据库来存储和管理与任务调度相关的所有必要信息。这种方式确保了在多个节点之间可以共享和同步状态信息,使得集群能够有效地运作。以下是 Quartz 使用的一些核心数据库表,这些表对于调度器的功能至关重要:
核心数据库表
1. QRTZ_JOB_DETAILS
这张表存储作业的详细信息。每个作业的定义包括它的名字、组以及执行作业所需的类名等信息。
- SCHED_NAME:调度器名称。
- JOB_NAME:作业名称。
- JOB_GROUP:作业组名。
- JOB_CLASS_NAME:实现 Job 接口的类名。
- IS_DURABLE:作业是否持久化,即使没有触发器关联也不会被删除。
- IS_NONCONCURRENT:作业是否不并发执行。
- IS_UPDATE_DATA:是否在作业执行之后更新 JobDataMap。
- REQUESTS_RECOVERY:作业在执行中是否请求恢复。
2. QRTZ_TRIGGERS
这张表存储触发器的基本信息,包括触发器的名称、组、关联的作业详情以及触发器的类型(如简单触发器或 Cron 触发器)。
- SCHED_NAME:调度器名称。
- TRIGGER_NAME:触发器名称。
- TRIGGER_GROUP:触发器组名。
- JOB_NAME:关联的作业名称。
- JOB_GROUP:关联的作业组名。
- DESCRIPTION:触发器描述。
- NEXT_FIRE_TIME:下次触发时间。
- PREV_FIRE_TIME:上次触发时间。
- PRIORITY:触发器优先级。
3. QRTZ_CRON_TRIGGERS
这张表存储了所有基于 Cron 表达式的触发器的详细信息。它和 QRTZ_TRIGGERS 表紧密相关,专门用于存储 Cron 触发器特有的属性。
- SCHED_NAME:调度器名称。
- TRIGGER_NAME:触发器名称。
- TRIGGER_GROUP:触发器组名。
- CRON_EXPRESSION:Cron 表达式,定义了触发规则。
- TIME_ZONE_ID:时区 ID,影响 Cron 表达式的计算。
4. QRTZ_SIMPLE_TRIGGERS
这张表存储简单触发器的信息,这类触发器具有重复计数和重复间隔等属性。
- SCHED_NAME:调度器名称。
- TRIGGER_NAME:触发器名称。
- TRIGGER_GROUP:触发器组名。
- REPEAT_COUNT:重复触发次数。
- REPEAT_INTERVAL:触发间隔时间。
- TIMES_TRIGGERED:已触发次数。
5. QRTZ_SCHEDULER_STATE
这张表用于存储集群中各个节点的状态信息,关键于集群模式下调度器的健康运行和故障恢复。
- SCHED_NAME:调度器名称。
- INSTANCE_NAME:实例名称。
- LAST_CHECKIN_TIME:最后一次检查时间。
- CHECKIN_INTERVAL:检查间隔。
这些表共同维护了 Quartz 调度器在运行时所需的所有数据,使得在多节点环境下,任何一个节点都能够接管和继续执行未完成的任务,以及按计划执行未来的任务。在集群模式下,这些表的数据一致性和同步非常重要,直接影响到任务调度的准确性和可靠性。