在JobScheduler的init方法中我们看到,JobScheduleController被创建并且由它启动了定时任务,接下来我们就来看一下它是如何工作的。
JobScheduleController jobScheduleController = new JobScheduleController(
createScheduler(), createJobDetail(liteJobConfigFromRegCenter.getTypeConfig().getJobClass()), liteJobConfigFromRegCenter.getJobName());
private Scheduler createScheduler() {
Scheduler result;
try {
StdSchedulerFactory factory = new StdSchedulerFactory();
factory.initialize(getBaseQuartzProperties());
result = factory.getScheduler();
result.getListenerManager().addTriggerListener(schedulerFacade.newJobTriggerListener());
} catch (final SchedulerException ex) {
throw new JobSystemException(ex);
}
return result;
}
首先第一个参数就是创建了一个quartz的定时器
private JobDetail createJobDetail(final String jobClass) {
//创建JobDetail
JobDetail result = JobBuilder.newJob(LiteJob.class).withIdentity(liteJobConfig.getJobName()).build();
//保存作业服务的门面类
result.getJobDataMap().put(JOB_FACADE_DATA_MAP_KEY, jobFacade);
...
return result;
}
前面提到的JobDetail是在createJobDetail方法里面创建的,通过quartz创建了LiteJob定时任务,其实这就是Elastic-Job和quartz联系在一起的地方
public final class LiteJob implements Job {
@Setter
private El