工作原理解读
只要配置好 DataSource Quartz 会自动进行表的数据操作,
添加 Quartz Job 任务
保存 QRTZ_JOB_DETAILS、QRTZ_TRIGGERS => QRTZ_CRON_TRIGGERS
public void addJob(QuartzJob job) throws SchedulerException {
....
JobDetail jobDetail = JobBuilder.newJob(jobClass)
.withIdentity(jobKey)
.build();
// 放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
//该行代码执行后,会将定时任务插入 QRTZ_JOB_DETAILS 等相关表
scheduler.scheduleJob(jobDetail, trigger);
....
}
//org.quartz.impl.jdbcjobstore.JobStoreSupport
public void storeJobAndTrigger(final JobDetail newJob, final OperableTrigger newTrigger) throws JobPersistenceException {
this.executeInLock(this.isLockOnInsert() ? "TRIGGER_ACCESS" : null, new JobStoreSupport.VoidTransactionCallback() {
public void executeVoid(Connection conn) throws JobPersistenceException {
JobStoreSupport.this.storeJob(conn, newJob, false); //数据保存 QRTZ_JOB_DETAILS 表
JobStoreSupport.this.storeTrigger(conn, newTrigger, newJob, false, "WAITING", false, false); //数据保存 QRTZ_TRIGGERS 表
}
});
}
public int insertTrigger(...){
INSERT_TRIGGER
insertExtendedTriggerProperties => INSERT_CRON_TRIGGER OR INSERT_BLOB_TRIGGER
}
详见:org.quartz.impl.jdbcjobstore.StdJDBCDelegate
将 job.ge

文章详细解读了Quartz如何配置DataSource后自动管理表数据,包括添加任务时如何保存到QRTZ_JOB_DETAILS和QRTZ_TRIGGERS表,以及执行、获取和删除QuartzJob任务的步骤。同时,提到了SpringBoot集成Quartz的依赖和清除数据的MySQL脚本。此外,文章还展示了QuartzJob的实体和核心代码片段。
最低0.47元/天 解锁文章
212

被折叠的 条评论
为什么被折叠?



