若依定时任务
表结构
目录
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(