JobService.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.example.demo.service;
  2. import org.quartz.*;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. @Service
  6. public class JobService {
  7. @Autowired
  8. private Scheduler scheduler;
  9. /**
  10. * 删除job
  11. *
  12. * @param triggerName 触发器名称
  13. * @param triggerGroup 触发器分组
  14. * @param jobName 任务名称
  15. * @param jobGroup 任务分组
  16. * @throws SchedulerException
  17. */
  18. public void deleteJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException {
  19. TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
  20. scheduler.pauseTrigger(triggerKey);
  21. scheduler.unscheduleJob(triggerKey);
  22. JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
  23. scheduler.deleteJob(jobKey);
  24. }
  25. /**
  26. * 暂停job
  27. *
  28. * @param triggerName 触发器名称
  29. * @param triggerGroup 触发器分组
  30. * @param jobName 任务名称
  31. * @param jobGroup 任务分组
  32. * @throws SchedulerException
  33. */
  34. public void pauseJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException {
  35. TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
  36. scheduler.pauseTrigger(triggerKey);
  37. scheduler.unscheduleJob(triggerKey);
  38. JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
  39. scheduler.pauseJob(jobKey);
  40. }
  41. /**
  42. * 恢复job
  43. *
  44. * @param triggerName 触发器名称
  45. * @param triggerGroup 触发器分组
  46. * @param jobName 任务名称
  47. * @param jobGroup 任务分组
  48. * @throws SchedulerException
  49. */
  50. public void resumeJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException {
  51. TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
  52. scheduler.pauseTrigger(triggerKey);
  53. scheduler.unscheduleJob(triggerKey);
  54. JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
  55. scheduler.resumeJob(jobKey);
  56. }
  57. /**
  58. * 修改定时任务
  59. *
  60. * @param cron 新的cron表达式
  61. */
  62. public void updateJob(String triggerName, String triggerGroup, String cron) {
  63. JobDataMap jobDataMap =new JobDataMap();
  64. jobDataMap.put("msg","update1");
  65. TriggerKey oldTriggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
  66. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  67. CronTrigger cronTrigger = TriggerBuilder.newTrigger()
  68. .withIdentity(oldTriggerKey).usingJobData(jobDataMap).withSchedule(scheduleBuilder).build();
  69. try {
  70. scheduler.rescheduleJob(oldTriggerKey, cronTrigger);
  71. } catch (SchedulerException e) {
  72. e.printStackTrace();
  73. }
  74. }
  75. /**
  76. * 新增job任务
  77. *
  78. * @param jobName job名称
  79. * @param jobGroupName job分组名称
  80. * @param triggerName 触发器名称
  81. * @param triggerGroupName 触发器分组名称
  82. * @param jobClass 需要执行的job.class
  83. * @param cron cron 表达式
  84. * @throws SchedulerException
  85. */
  86. public void addJob(String jobName, String jobGroupName,
  87. String triggerName, String triggerGroupName, Class jobClass, String cron) throws SchedulerException {
  88. JobDataMap jobDataMap =new JobDataMap();
  89. jobDataMap.put("msg","add");
  90. CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  91. JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
  92. Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName)
  93. .withSchedule(cronScheduleBuilder).usingJobData(jobDataMap).build();
  94. scheduler.scheduleJob(jobDetail, trigger);
  95. }
  96. }