123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package com.yihu.wlyy.job;
- import java.util.Date;
- import java.util.Map;
- import javax.annotation.PostConstruct;
- import com.yihu.wlyy.repository.*;
- import org.quartz.*;
- import org.quartz.impl.triggers.SimpleTriggerImpl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.quartz.SchedulerFactoryBean;
- import org.springframework.stereotype.Component;
- import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
- @Component("quartzHelper")
- public class QuartzHelper {
- @Autowired
- private SchedulerFactoryBean schedulerFactoryBean;
- private Scheduler scheduler = null;
- @PostConstruct
- public void init() {
- try {
- scheduler = schedulerFactoryBean.getScheduler();
- scheduler.start();
- } catch (SchedulerException e) {
- e.printStackTrace();
- }
- }
- public void addJob(Class jobClass, String cronString, String jobKey,
- Map<String, Object> params) throws Exception {
- if (!CronExpression.isValidExpression(cronString)) {
- throw new Exception("cronExpression is not a valid Expression");
- }
- try {
- JobDetail job = JobBuilder.newJob(jobClass)
- .withIdentity("job-id:" + jobKey, "job-group:" + jobKey)
- .build();
- JobDataMap jobDataMap = job.getJobDataMap();
- jobDataMap.putAll(params);
- CronTrigger trigger = TriggerBuilder
- .newTrigger()
- .withIdentity("trigger-name:" + jobKey,
- "trigger-group:" + jobKey)
- .withSchedule(CronScheduleBuilder.cronSchedule(cronString))
- .build();
- scheduler.scheduleJob(job, trigger);
- scheduler.start();
- } catch (SchedulerException e) {
- e.printStackTrace();
- }
- }
- public void removeJob(String jobKeyString) throws Exception {
- TriggerKey triggerKey = new TriggerKey("trigger-name:" + jobKeyString,
- "trigger-group:" + jobKeyString);
- JobKey jobName = new JobKey("job-group:" + jobKeyString, "job-id:"
- + jobKeyString);
- scheduler.pauseTrigger(triggerKey);// 停止触发器
- scheduler.unscheduleJob(triggerKey);// 移除触发器
- scheduler.deleteJob(jobName);// 删除任务
- }
- public boolean isExistJob(String jobKey) throws SchedulerException {
- JobKey jk = new JobKey("job-id:" + jobKey,"job-group:" + jobKey);
- if(scheduler.checkExists(jk)){
- return true;
- }else{
- return false;
- }
- }
- public void startNow(Class jobClass, String id, Map<String, Object> params) throws Exception {
- JobDetail job = JobBuilder.newJob(jobClass).
- withIdentity("job-simple-id:" + id, "job-simple-group:" + id)
- .build();
- JobDataMap jobDataMap = job.getJobDataMap();
- jobDataMap.putAll(params);
- SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger1-simple-id:" + id, "group1-simple-group:" + id)
- .startAt(new Date()).withSchedule(simpleSchedule()
- .withIntervalInSeconds(10)
- .withRepeatCount(0)
- )
- .build();
- scheduler.scheduleJob(job, trigger);
- scheduler.start();
- }
- }
|