QuartzHelper.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.yihu.wlyy.job;
  2. import java.util.Date;
  3. import java.util.Map;
  4. import javax.annotation.PostConstruct;
  5. import com.yihu.wlyy.repository.*;
  6. import org.quartz.*;
  7. import org.quartz.impl.triggers.SimpleTriggerImpl;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.scheduling.quartz.SchedulerFactoryBean;
  10. import org.springframework.stereotype.Component;
  11. import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
  12. @Component("quartzHelper")
  13. public class QuartzHelper {
  14. @Autowired
  15. private SchedulerFactoryBean schedulerFactoryBean;
  16. private Scheduler scheduler = null;
  17. @PostConstruct
  18. public void init() {
  19. try {
  20. scheduler = schedulerFactoryBean.getScheduler();
  21. scheduler.start();
  22. } catch (SchedulerException e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. public void addJob(Class jobClass, String cronString, String jobKey,
  27. Map<String, Object> params) throws Exception {
  28. if (!CronExpression.isValidExpression(cronString)) {
  29. throw new Exception("cronExpression is not a valid Expression");
  30. }
  31. try {
  32. JobDetail job = JobBuilder.newJob(jobClass)
  33. .withIdentity("job-id:" + jobKey, "job-group:" + jobKey)
  34. .build();
  35. JobDataMap jobDataMap = job.getJobDataMap();
  36. jobDataMap.putAll(params);
  37. CronTrigger trigger = TriggerBuilder
  38. .newTrigger()
  39. .withIdentity("trigger-name:" + jobKey,
  40. "trigger-group:" + jobKey)
  41. .withSchedule(CronScheduleBuilder.cronSchedule(cronString))
  42. .build();
  43. scheduler.scheduleJob(job, trigger);
  44. scheduler.start();
  45. } catch (SchedulerException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. public void removeJob(String jobKeyString) throws Exception {
  50. TriggerKey triggerKey = new TriggerKey("trigger-name:" + jobKeyString,
  51. "trigger-group:" + jobKeyString);
  52. JobKey jobName = new JobKey("job-group:" + jobKeyString, "job-id:"
  53. + jobKeyString);
  54. scheduler.pauseTrigger(triggerKey);// 停止触发器
  55. scheduler.unscheduleJob(triggerKey);// 移除触发器
  56. scheduler.deleteJob(jobName);// 删除任务
  57. }
  58. public boolean isExistJob(String jobKey) throws SchedulerException {
  59. JobKey jk = new JobKey("job-id:" + jobKey,"job-group:" + jobKey);
  60. if(scheduler.checkExists(jk)){
  61. return true;
  62. }else{
  63. return false;
  64. }
  65. }
  66. public void startNow(Class jobClass, String id, Map<String, Object> params) throws Exception {
  67. JobDetail job = JobBuilder.newJob(jobClass).
  68. withIdentity("job-simple-id:" + id, "job-simple-group:" + id)
  69. .build();
  70. JobDataMap jobDataMap = job.getJobDataMap();
  71. jobDataMap.putAll(params);
  72. SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger1-simple-id:" + id, "group1-simple-group:" + id)
  73. .startAt(new Date()).withSchedule(simpleSchedule()
  74. .withIntervalInSeconds(10)
  75. .withRepeatCount(0)
  76. )
  77. .build();
  78. scheduler.scheduleJob(job, trigger);
  79. scheduler.start();
  80. }
  81. }