123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 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);
- }
- }
|