Quartz所使用的表的说明的完整攻略
Quartz是一个开源的作业调度框架,可以用于在Java应用程序中执行定时任务。在Quartz中,使用了多个表来存储作业和触发器的相关信息。本文将为您提供一份Quartz所使用的表的说明的完整攻略,包括表的结构、字段含义和两个示例说明。
表的结构
Quartz所使用的表的结构如下:
QRTZ_JOB_DETAILS
列名 | 数据类型 | 描述 |
---|---|---|
SCHED_NAME | VARCHAR(120) | 调度器名称 |
JOB_NAME | VARCHAR(200) | 作业名称 |
JOB_GROUP | VARCHAR(200) | 作业组名称 |
DESCRIPTION | VARCHAR(250) | 作业描述 |
JOB_CLASS_NAME | VARCHAR(250) | 作业类名 |
IS_DURABLE | VARCHAR(1) | 是否持久化 |
IS_NONCONCURRENT | VARCHAR(1) | 是否并发执行 |
IS_UPDATE_DATA | VARCHAR(1) | 是否更新数据 |
REQUESTS_RECOVERY | VARCHAR(1) | 是否恢复 |
QRTZ_TRIGGERS
列名 | 数据类型 | 描述 |
---|---|---|
SCHED_NAME | VARCHAR(120) | 调度器名称 |
TRIGGER_NAME | VARCHAR(200) | 触发器名称 |
TRIGGER_GROUP | VARCHAR(200) | 触发器组名称 |
JOB_NAME | VARCHAR(200) | 作业名称 |
JOB_GROUP | VARCHAR(200) | 作业组名称 |
DESCRIPTION | VARCHAR(250) | 触发器描述 |
NEXT_FIRE_TIME | BIGINT | 下一次触发时间 |
PREV_FIRE_TIME | BIGINT | 上一次触发时间 |
PRIORITY | INTEGER | 触发器优先级 |
TRIGGER_STATE | VARCHAR(16) | 触发器状态 |
TRIGGER_TYPE | VARCHAR(8) | 触发器类型 |
START_TIME | BIGINT | 开始时间 |
END_TIME | BIGINT | 结束时间 |
CALENDAR_NAME | VARCHAR(200) | 日历名称 |
MISFIRE_INSTR | SMALLINT | 错过触发策略 |
QRTZ_CRON_TRIGGERS
列名 | 数据类型 | 描述 |
---|---|---|
SCHED_NAME | VARCHAR(120) | 调度器名称 |
TRIGGER_NAME | VARCHAR(200) | 触发器名称 |
TRIGGER_GROUP | VARCHAR(200) | 触发器组名称 |
CRON_EXPRESSION | VARCHAR(120) | Cron表达式 |
TIME_ZONE_ID | VARCHAR(80) | 时区 |
字段含义
Quartz所使用的表的字段含义如下:
QRTZ_JOB_DETAILS
- SCHED_NAME:调度器名称。
- JOB_NAME:作业名称。
- JOB_GROUP:作业组名称。
- DESCRIPTION:作业描述。
- JOB_CLASS_NAME:作业类名。
- IS_DURABLE:是否持久化。
- IS_NONCONCURRENT:是否并发执行。
- IS_UPDATE_DATA:是否更新数据。
- REQUESTS_RECOVERY:是否恢复。
QRTZ_TRIGGERS
- SCHED_NAME:调度器名称。
- TRIGGER_NAME:触发器名称。
- TRIGGER_GROUP:触发器组名称。
- JOB_NAME:作业名称。
- JOB_GROUP:作业组名称。
- DESCRIPTION:触发器描述。
- NEXT_FIRE_TIME:下一次触发时间。
- PREV_FIRE_TIME:上一次触发时间。
- PRIORITY:触发器优先级。
- TRIGGER_STATE:触发器状态。
- TRIGGER_TYPE:触发器类型。
- START_TIME:开始时间。
- END_TIME:结束时间。
- CALENDAR_NAME:日历名称。
- MISFIRE_INSTR:错过触发策略。
QRTZ_CRON_TRIGGERS
- SCHED_NAME:调度器名称。
- TRIGGER_NAME:触发器名称。
- TRIGGER_GROUP:触发器组名称。
- CRON_EXPRESSION:Cron表达式。
- TIME_ZONE_ID:时区。
示例1:使用Quartz实现定时任务
在这个示例中,我们将使用Quartz实现一个定时任务。可以按照以下步骤进行操作:
- 创建作业类:创建一个实现Job接口的作业类。
- 创建触发器:创建一个触发器,设置触发时间和触发策略。
- 创建调度器:创建一个调度器,将作业和触发器添加到调度器中。
- 启动调度器:启动调度器,开始执行定时任务。
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello Quartz!");
}
}
public class QuartzTest {
public static void main(String[] args) throws SchedulerException {
// 创建作业
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
// 创建触发器
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
// 创建调度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
在这个示例中,我们创建了一个作业类MyJob,实现了Job接口,并在execute方法中输出了一条信息。然后,我们创建了一个触发器,设置了触发时间和触发策略。最后,我们创建了一个调度器,将作业和触发器添加到调度器中,并启动调度器,开始执行定时任务。
示例2:使用Quartz实现分布式定时任务
在这个示例中,我们将使用Quartz实现一个分布式定时任务。可以按照以下步骤进行操作:
- 创建作业类:创建一个实现Job接口的作业类。
- 创建触发器:创建一个触发器,设置触发时间和触发策略。
- 创建调度器:创建一个调度器,将作业和触发器添加到调度器中。
- 启动调度器:启动调度器,开始执行定时任务。
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello Quartz!");
}
}
public class QuartzTest {
public static void main(String[] args) throws SchedulerException {
// 创建作业
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
// 创建触发器
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
// 创建调度器
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
在这个示例中,我们创建了一个作业类MyJob,实现了Job接口,并在execute方法中输出了一条信息。然后,我们创建了一个触发器,设置了触发时间和触发策略。最后,我们创建了一个调度器,将作业和触发器添加到调度器中,并启动调度器,开始执行定时任务。由于使用了分布式调度器,因此可以在多个节点上同时执行定时任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Quartz所使用的表的说明 - Python技术站