QuartzUtil.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package jnpf.integrate.job;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.quartz.*;
  4. import org.quartz.impl.StdSchedulerFactory;
  5. import java.util.Date;
  6. @Slf4j
  7. public class QuartzUtil {
  8. private static final SchedulerFactory schedulerFactory = new StdSchedulerFactory();
  9. public static void addJob(String jobName, String cron, Class<? extends Job> jobClass, JobDataMap jobDataMap, Date startDate, Date endDate) {
  10. if (jobDataMap == null) {
  11. jobDataMap = new JobDataMap();
  12. }
  13. JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName).setJobData(jobDataMap).build();
  14. Trigger trigger = TriggerBuilder.newTrigger()
  15. .forJob(jobDetail)
  16. .withIdentity(jobName)
  17. .withSchedule(CronScheduleBuilder.cronSchedule(cron))
  18. .startAt(startDate == null ? new Date() : startDate)
  19. .endAt(endDate != null ? endDate : null)
  20. .build();
  21. try {
  22. //获取实例化的 Scheduler。
  23. Scheduler scheduler = getScheduler();
  24. //将任务及其触发器放入调度器
  25. scheduler.scheduleJob(jobDetail, trigger);
  26. //调度器开始调度任务
  27. if (!scheduler.isShutdown()) {
  28. scheduler.start();
  29. }
  30. } catch (SchedulerException e) {
  31. log.error("新增调度失败:"+e.getMessage());
  32. }
  33. }
  34. private static Scheduler getScheduler() {
  35. try {
  36. return schedulerFactory.getScheduler();
  37. } catch (SchedulerException e) {
  38. e.getMessage();
  39. }
  40. return null;
  41. }
  42. public static void deleteJob(String jobName) {
  43. try {
  44. TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
  45. Scheduler scheduler = getScheduler();
  46. scheduler.pauseTrigger(triggerKey);
  47. scheduler.unscheduleJob(triggerKey);
  48. scheduler.deleteJob(JobKey.jobKey(jobName));
  49. } catch (SchedulerException e) {
  50. log.error("删除调度失败:"+e.getMessage());
  51. }
  52. }
  53. private static boolean isTriKey(String jobName) {
  54. boolean flag = false;
  55. try {
  56. Scheduler sched = schedulerFactory.getScheduler();
  57. TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
  58. CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
  59. flag = trigger != null;
  60. } catch (Exception e) {
  61. e.getMessage();
  62. }
  63. return flag;
  64. }
  65. }