package com.example.demo.service; import org.quartz.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class JobService { @Autowired private Scheduler scheduler; /** * 删除job * * @param triggerName 触发器名称 * @param triggerGroup 触发器分组 * @param jobName 任务名称 * @param jobGroup 任务分组 * @throws SchedulerException */ public void deleteJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException { TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup); scheduler.pauseTrigger(triggerKey); scheduler.unscheduleJob(triggerKey); JobKey jobKey = JobKey.jobKey(jobName, jobGroup); scheduler.deleteJob(jobKey); } /** * 暂停job * * @param triggerName 触发器名称 * @param triggerGroup 触发器分组 * @param jobName 任务名称 * @param jobGroup 任务分组 * @throws SchedulerException */ public void pauseJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException { TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup); scheduler.pauseTrigger(triggerKey); scheduler.unscheduleJob(triggerKey); JobKey jobKey = JobKey.jobKey(jobName, jobGroup); scheduler.pauseJob(jobKey); } /** * 恢复job * * @param triggerName 触发器名称 * @param triggerGroup 触发器分组 * @param jobName 任务名称 * @param jobGroup 任务分组 * @throws SchedulerException */ public void resumeJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException { TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup); scheduler.pauseTrigger(triggerKey); scheduler.unscheduleJob(triggerKey); JobKey jobKey = JobKey.jobKey(jobName, jobGroup); scheduler.resumeJob(jobKey); } /** * 修改定时任务 * * @param cron 新的cron表达式 */ public void updateJob(String triggerName, String triggerGroup, String cron) { JobDataMap jobDataMap =new JobDataMap(); jobDataMap.put("msg","update1"); TriggerKey oldTriggerKey = TriggerKey.triggerKey(triggerName, triggerGroup); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron); CronTrigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity(oldTriggerKey).usingJobData(jobDataMap).withSchedule(scheduleBuilder).build(); try { scheduler.rescheduleJob(oldTriggerKey, cronTrigger); } catch (SchedulerException e) { e.printStackTrace(); } } /** * 新增job任务 * * @param jobName job名称 * @param jobGroupName job分组名称 * @param triggerName 触发器名称 * @param triggerGroupName 触发器分组名称 * @param jobClass 需要执行的job.class * @param cron cron 表达式 * @throws SchedulerException */ public void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Class jobClass, String cron) throws SchedulerException { JobDataMap jobDataMap =new JobDataMap(); jobDataMap.put("msg","add"); CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron); JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName) .withSchedule(cronScheduleBuilder).usingJobData(jobDataMap).build(); scheduler.scheduleJob(jobDetail, trigger); } }