|
@@ -1,29 +1,18 @@
|
|
|
package com.ifast.job.quartz;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
-
|
|
|
-import org.apache.log4j.Logger;
|
|
|
-import org.quartz.CronScheduleBuilder;
|
|
|
-import org.quartz.CronTrigger;
|
|
|
-import org.quartz.DateBuilder;
|
|
|
+import com.ifast.job.domain.ScheduleJobDO;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.quartz.*;
|
|
|
import org.quartz.DateBuilder.IntervalUnit;
|
|
|
-import org.quartz.Job;
|
|
|
-import org.quartz.JobBuilder;
|
|
|
-import org.quartz.JobDetail;
|
|
|
-import org.quartz.JobExecutionContext;
|
|
|
-import org.quartz.JobKey;
|
|
|
-import org.quartz.Scheduler;
|
|
|
-import org.quartz.SchedulerException;
|
|
|
-import org.quartz.Trigger;
|
|
|
-import org.quartz.TriggerBuilder;
|
|
|
-import org.quartz.TriggerKey;
|
|
|
import org.quartz.impl.matchers.GroupMatcher;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import com.ifast.job.domain.ScheduleJob;;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+;
|
|
|
|
|
|
|
|
|
|
|
@@ -33,36 +22,25 @@ import com.ifast.job.domain.ScheduleJob;;
|
|
|
* <small> 2018年3月23日 | Aron</small>
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class QuartzManager {
|
|
|
- public final Logger log = Logger.getLogger(this.getClass());
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
@Autowired
|
|
|
private Scheduler scheduler;
|
|
|
|
|
|
|
|
|
* 添加任务
|
|
|
- *
|
|
|
- * @param scheduleJob
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
-
|
|
|
@SuppressWarnings("unchecked")
|
|
|
- public void addJob(ScheduleJob job) {
|
|
|
+ public void addJob(ScheduleJobDO job) {
|
|
|
try {
|
|
|
|
|
|
-
|
|
|
-
|
|
|
Class<? extends Job> jobClass = (Class<? extends Job>) (Class.forName(job.getBeanClass()).newInstance()
|
|
|
.getClass());
|
|
|
- JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(job.getJobName(), job.getJobGroup())
|
|
|
+
|
|
|
+ JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(new JobKey(job.getJobName(), job.getJobGroup()))
|
|
|
.build();
|
|
|
-
|
|
|
-
|
|
|
- Trigger trigger = TriggerBuilder.newTrigger().withIdentity(job.getJobName(), job.getJobGroup())
|
|
|
+
|
|
|
+ Trigger trigger = TriggerBuilder.newTrigger().withIdentity(new TriggerKey(job.getJobName(), job.getJobGroup()))
|
|
|
.startAt(DateBuilder.futureDate(1, IntervalUnit.SECOND))
|
|
|
.withSchedule(CronScheduleBuilder.cronSchedule(job.getCronExpression())).startNow().build();
|
|
|
|
|
@@ -72,71 +50,21 @@ public class QuartzManager {
|
|
|
scheduler.start();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
+ log.error(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
* 获取所有计划中的任务列表
|
|
|
- *
|
|
|
- * @return
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public List<ScheduleJob> getAllJob() throws SchedulerException {
|
|
|
+ public List<ScheduleJobDO> getAllJob() throws SchedulerException {
|
|
|
GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
|
|
|
Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);
|
|
|
- List<ScheduleJob> jobList = new ArrayList<ScheduleJob>();
|
|
|
+ List<ScheduleJobDO> jobList = new ArrayList<>();
|
|
|
for (JobKey jobKey : jobKeys) {
|
|
|
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
|
|
|
for (Trigger trigger : triggers) {
|
|
|
- ScheduleJob job = new ScheduleJob();
|
|
|
+ ScheduleJobDO job = new ScheduleJobDO();
|
|
|
job.setJobName(jobKey.getName());
|
|
|
job.setJobGroup(jobKey.getGroup());
|
|
|
job.setDescription("触发器:" + trigger.getKey());
|
|
@@ -155,15 +83,12 @@ public class QuartzManager {
|
|
|
|
|
|
|
|
|
* 所有正在运行的job
|
|
|
- *
|
|
|
- * @return
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public List<ScheduleJob> getRunningJob() throws SchedulerException {
|
|
|
+ public List<ScheduleJobDO> getRunningJob() throws SchedulerException {
|
|
|
List<JobExecutionContext> executingJobs = scheduler.getCurrentlyExecutingJobs();
|
|
|
- List<ScheduleJob> jobList = new ArrayList<ScheduleJob>(executingJobs.size());
|
|
|
+ List<ScheduleJobDO> jobList = new ArrayList<ScheduleJobDO>(executingJobs.size());
|
|
|
for (JobExecutionContext executingJob : executingJobs) {
|
|
|
- ScheduleJob job = new ScheduleJob();
|
|
|
+ ScheduleJobDO job = new ScheduleJobDO();
|
|
|
JobDetail jobDetail = executingJob.getJobDetail();
|
|
|
JobKey jobKey = jobDetail.getKey();
|
|
|
Trigger trigger = executingJob.getTrigger();
|
|
@@ -184,33 +109,24 @@ public class QuartzManager {
|
|
|
|
|
|
|
|
|
* 暂停一个job
|
|
|
- *
|
|
|
- * @param scheduleJob
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public void pauseJob(ScheduleJob scheduleJob) throws SchedulerException {
|
|
|
+ public void pauseJob(ScheduleJobDO scheduleJob) throws SchedulerException {
|
|
|
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
|
|
|
scheduler.pauseJob(jobKey);
|
|
|
}
|
|
|
|
|
|
|
|
|
* 恢复一个job
|
|
|
- *
|
|
|
- * @param scheduleJob
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public void resumeJob(ScheduleJob scheduleJob) throws SchedulerException {
|
|
|
+ public void resumeJob(ScheduleJobDO scheduleJob) throws SchedulerException {
|
|
|
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
|
|
|
scheduler.resumeJob(jobKey);
|
|
|
}
|
|
|
|
|
|
|
|
|
* 删除一个job
|
|
|
- *
|
|
|
- * @param scheduleJob
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public void deleteJob(ScheduleJob scheduleJob) throws SchedulerException {
|
|
|
+ public void deleteJob(ScheduleJobDO scheduleJob) throws SchedulerException {
|
|
|
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
|
|
|
scheduler.deleteJob(jobKey);
|
|
|
|
|
@@ -218,31 +134,20 @@ public class QuartzManager {
|
|
|
|
|
|
|
|
|
* 立即执行job
|
|
|
- *
|
|
|
- * @param scheduleJob
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public void runAJobNow(ScheduleJob scheduleJob) throws SchedulerException {
|
|
|
+ public void runAJobNow(ScheduleJobDO scheduleJob) throws SchedulerException {
|
|
|
JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
|
|
|
scheduler.triggerJob(jobKey);
|
|
|
}
|
|
|
|
|
|
|
|
|
* 更新job时间表达式
|
|
|
- *
|
|
|
- * @param scheduleJob
|
|
|
- * @throws SchedulerException
|
|
|
*/
|
|
|
- public void updateJobCron(ScheduleJob scheduleJob) throws SchedulerException {
|
|
|
-
|
|
|
+ public void updateJobCron(ScheduleJobDO scheduleJob) throws SchedulerException {
|
|
|
TriggerKey triggerKey = TriggerKey.triggerKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
|
|
|
-
|
|
|
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
|
|
-
|
|
|
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression());
|
|
|
-
|
|
|
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
|
|
|
-
|
|
|
scheduler.rescheduleJob(triggerKey, trigger);
|
|
|
}
|
|
|
}
|