public void addJob(QuartzJobEntity quartzJob) {
try {
// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
TriggerKey key = new TriggerKey(quartzJob.getJobName(), quartzJob.getJobGroup());//建立触发器
boolean result = scheduler.checkExists(key);
if(result ){
log.info("[job]jobName:{}, groupName:{} has existed back", quartzJob.getJobName(), quartzJob.getJobGroup());
return;
}
JobDetail jobDetail = JobBuilder.newJob(quartzJob.getBeanClass()).withIdentity(quartzJob.getJobName(), quartzJob.getJobGroup())// 创建一个任务添加任务要执行的对象,设置任务名称及分组
.build();
// 定义调度触发规则
// 使用cornTrigger规则
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(quartzJob.getJobName(), quartzJob.getJobGroup()) //设置所创建触发器的名字及分组名
.startAt(DateBuilder.futureDate(1, IntervalUnit.SECOND))
.withSchedule(CronScheduleBuilder.cronSchedule(quartzJob.getCronExpression())).startNow().build();
// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(jobDetail, trigger);
// 启动
if (!scheduler.isShutdown()) {
scheduler.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
公司代码,传入的QuartzJobEntity 就是一个对象用于存放,任务名分组名什么的。
关键是执行完之后数据库莫名就多了所添加的任务名,分组名等一条记录,我都不知道他是怎么保存进去的
如图这边就多添加了一条记录,第二次执行这个任务的时候,就告知任务已经存在。
我先知道的是,这个数据是quartz自动保存的吗?还是说有什么配置文件可以设置往里面保存内容。
还有就是第二次执行这个任务的时候告知已经存在,他也是通过配置文件查数据库发现已经存在的吗?