package com.xzx.gc.util.xzxquartz;/*
|
package com.ibeetl.admin.console.util.xzxquartz;
|
|
import org.quartz.*;
|
import org.quartz.impl.matchers.GroupMatcher;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.quartz.QuartzJobBean;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.PostConstruct;
|
import java.util.*;
|
|
@Service
|
public class QuartzService {
|
|
@Autowired
|
private Scheduler scheduler;
|
|
@PostConstruct
|
public void startScheduler() {
|
try {
|
scheduler.start();
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 增加一个job
|
*
|
* @param jobClass
|
* 任务实现类
|
* @param jobName
|
* 任务名称
|
* @param jobGroupName
|
* 任务组名
|
* @param jobTime
|
* 时间表达式 (这是每隔多少秒为一次任务)
|
* @param jobTimes
|
* 运行的次数 (<0:表示不限次数)
|
* @param jobData
|
* 参数
|
*//*
|
|
public void addJob(Class<? extends QuartzJobBean> jobClass, String jobName, String jobGroupName, int jobTime,
|
int jobTimes, Map jobData) {
|
try {
|
// 任务名称和组构成任务key
|
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName)
|
.build();
|
// 设置job参数
|
if(jobData!= null && jobData.size()>0){
|
jobDetail.getJobDataMap().putAll(jobData);
|
}
|
// 使用simpleTrigger规则
|
Trigger trigger = null;
|
if (jobTimes < 0) {
|
trigger = TriggerBuilder.newTrigger().withIdentity(jobName, jobGroupName)
|
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withIntervalInSeconds(jobTime))
|
.startNow().build();
|
} else {
|
trigger = TriggerBuilder
|
.newTrigger().withIdentity(jobName, jobGroupName).withSchedule(SimpleScheduleBuilder
|
.repeatSecondlyForever(1).withIntervalInSeconds(jobTime).withRepeatCount(jobTimes))
|
.startNow().build();
|
}
|
scheduler.scheduleJob(jobDetail, trigger);
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 增加一个job
|
*
|
* @param jobClass
|
* 任务实现类
|
* @param jobName
|
* 任务名称(建议唯一)
|
* @param jobGroupName
|
* 任务组名
|
* @param jobTime
|
* 时间表达式 (如:0/5 * * * * ? )
|
* @param jobData
|
* 参数
|
*//*
|
|
public void addJob(Class<? extends QuartzJobBean> jobClass, String jobName, String jobGroupName, String jobTime, Map jobData) {
|
try {
|
// 创建jobDetail实例,绑定Job实现类
|
// 指明job的名称,所在组的名称,以及绑定job类
|
// 任务名称和组构成任务key
|
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName)
|
.build();
|
// 设置job参数
|
if(jobData!= null && jobData.size()>0){
|
jobDetail.getJobDataMap().putAll(jobData);
|
}
|
// 定义调度触发规则
|
// 使用cornTrigger规则
|
// 触发器key
|
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, jobGroupName)
|
.startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))
|
.withSchedule(CronScheduleBuilder.cronSchedule(jobTime)).startNow().build();
|
// 把作业和触发器注册到任务调度中
|
scheduler.scheduleJob(jobDetail, trigger);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 修改 一个job的 时间表达式
|
*
|
* @param jobName
|
* @param jobGroupName
|
* @param jobTime
|
*//*
|
|
public void updateJob(String jobName, String jobGroupName, String jobTime) {
|
try {
|
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroupName);
|
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
|
.withSchedule(CronScheduleBuilder.cronSchedule(jobTime)).build();
|
// 重启触发器
|
scheduler.rescheduleJob(triggerKey, trigger);
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 删除任务一个job
|
*
|
* @param jobName
|
* 任务名称
|
* @param jobGroupName
|
* 任务组名
|
*//*
|
|
public void deleteJob(String jobName, String jobGroupName) {
|
try {
|
scheduler.deleteJob(new JobKey(jobName, jobGroupName));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 暂停一个job
|
*
|
* @param jobName
|
* @param jobGroupName
|
*//*
|
|
public void pauseJob(String jobName, String jobGroupName) {
|
try {
|
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
|
scheduler.pauseJob(jobKey);
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 恢复一个job
|
*
|
* @param jobName
|
* @param jobGroupName
|
*//*
|
|
public void resumeJob(String jobName, String jobGroupName) {
|
try {
|
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
|
scheduler.resumeJob(jobKey);
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 立即执行一个job
|
*
|
* @param jobName
|
* @param jobGroupName
|
*//*
|
|
public void runAJobNow(String jobName, String jobGroupName) {
|
try {
|
JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
|
scheduler.triggerJob(jobKey);
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
}
|
|
*/
|
/**
|
* 获取所有计划中的任务列表
|
*
|
* @return
|
*//*
|
|
public List<Map<String, Object>> queryAllJob() {
|
List<Map<String, Object>> jobList = null;
|
try {
|
GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
|
Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);
|
jobList = new ArrayList<Map<String, Object>>();
|
for (JobKey jobKey : jobKeys) {
|
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
|
for (Trigger trigger : triggers) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("jobName", jobKey.getName());
|
map.put("jobGroupName", jobKey.getGroup());
|
map.put("description", "触发器:" + trigger.getKey());
|
Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
|
map.put("jobStatus", triggerState.name());
|
if (trigger instanceof CronTrigger) {
|
CronTrigger cronTrigger = (CronTrigger) trigger;
|
String cronExpression = cronTrigger.getCronExpression();
|
map.put("jobTime", cronExpression);
|
}
|
jobList.add(map);
|
}
|
}
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
return jobList;
|
}
|
|
*/
|
/**
|
* 获取所有正在运行的job
|
*
|
* @return
|
*//*
|
|
public List<Map<String, Object>> queryRunJob() {
|
List<Map<String, Object>> jobList = null;
|
try {
|
List<JobExecutionContext> executingJobs = scheduler.getCurrentlyExecutingJobs();
|
jobList = new ArrayList<Map<String, Object>>(executingJobs.size());
|
for (JobExecutionContext executingJob : executingJobs) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
JobDetail jobDetail = executingJob.getJobDetail();
|
JobKey jobKey = jobDetail.getKey();
|
Trigger trigger = executingJob.getTrigger();
|
map.put("jobName", jobKey.getName());
|
map.put("jobGroupName", jobKey.getGroup());
|
map.put("description", "触发器:" + trigger.getKey());
|
Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
|
map.put("jobStatus", triggerState.name());
|
if (trigger instanceof CronTrigger) {
|
CronTrigger cronTrigger = (CronTrigger) trigger;
|
String cronExpression = cronTrigger.getCronExpression();
|
map.put("jobTime", cronExpression);
|
}
|
jobList.add(map);
|
}
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
return jobList;
|
}
|
|
}
|
*/
|