表结构
目录
quartz框架
SysJobServiceImpl实现类
- 使用切点,在构造器执行的时候执行定时任务的构建(这个类是交给IOC容器的,所以这个时间点就是项目启动的时候)
- SysJobServiceImpl实现类的
init
方法
创建任务
/**
* 创建定时任务
*/
public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
{
// 获取Quartz任务类,根据任务是否允许并发执行选择不同的类
Class<? extends Job> jobClass = getQuartzJobClass(job);
// 构建JobDetail对象,包含任务的详细信息
Long jobId = job.getJobId();
String jobGroup = job.getJobGroup();
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
// 构建CronScheduleBuilder对象,用于定义任务的调度计划
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
// 构建CronTrigger对象,包含任务的触发器信息
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
.withSchedule(cronScheduleBuilder).build();
// 将任务的相关参数放入JobDetail的JobDataMap中,运行时可以获取
jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
// 判断任务是否已经存在,如果存在则先删除再创建
if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
{
scheduler.deleteJob(getJobKey(jobId, jobGroup));
}
// 判断任务是否过期,如果未过期则调度任务
if (StringUtils.isNotNull(