Here are the examples of the java api org.quartz.TriggerKey taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
98 Examples
19
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
/**
* unscheduleJob
*
* @param jobName
* @param jobGroup
* @return
* @throws SchedulerException
*/
public static boolean removeJob(String jobName, String jobGroup) throws SchedulerException {
// TriggerKey : name + group
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
boolean result = false;
if (checkExists(jobName, jobGroup)) {
result = scheduler.unscheduleJob(triggerKey);
logger.info(">>>>>>>>>>> removeJob, triggerKey:{}, result [{}]", triggerKey, result);
}
return true;
}
19
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
/**
* resume
*
* @param jobName
* @param jobGroup
* @return
* @throws SchedulerException
*/
public static boolean resumeJob(String jobName, String jobGroup) throws SchedulerException {
// TriggerKey : name + group
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
boolean result = false;
if (checkExists(jobName, jobGroup)) {
scheduler.resumeTrigger(triggerKey);
result = true;
logger.info(">>>>>>>>>>> resumeJob success, triggerKey:{}", triggerKey);
} else {
logger.info(">>>>>>>>>>> resumeJob fail, triggerKey:{}", triggerKey);
}
return result;
}
19
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
/**
* check if exists
*
* @param jobName
* @param jobGroup
* @return
* @throws SchedulerException
*/
public static boolean checkExists(String jobName, String jobGroup) throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
return scheduler.checkExists(triggerKey);
}
19
Source : JobClassMeta.java
with Apache License 2.0
from morcble
with Apache License 2.0
from morcble
void setTriggerKey(TriggerKey triggerKey) {
this.triggerKey = triggerKey;
}
19
Source : JobServiceImpl.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
TriggerKey getTriggerKeyIfValid(String qName, String qGroup) throws SchedulerException {
TriggerKey triggerKey = triggerKey(qName, qGroup);
if (factory.getScheduler().checkExists(triggerKey)) {
throw new GriffinException.ConflictException(QUARTZ_JOB_ALREADY_EXIST);
}
return triggerKey;
}
19
Source : JobInstance.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
private void createJobInstance(TriggerKey tk, Long interval, Integer repeatCount, String pJobName) throws Exception {
JobDetail jobDetail = addJobDetail(tk, pJobName);
Trigger trigger = genTriggerInstance(tk, jobDetail, interval, repeatCount);
factory.getScheduler().scheduleJob(trigger);
}
19
Source : JobInstance.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
private Trigger genTriggerInstance(TriggerKey tk, JobDetail jd, Long interval, Integer repeatCount) {
return newTrigger().withIdenreplacedy(tk).forJob(jd).startNow().withSchedule(simpleSchedule().withIntervalInMilliseconds(interval).withRepeatCount(repeatCount)).build();
}
19
Source : SmartQuartzUtil.java
with MIT License
from 1024-lab
with MIT License
from 1024-lab
public static Integer getTaskIdByTriggerKey(TriggerKey triggerKey) {
String name = triggerKey.getName();
return Integer.valueOf(StringUtils.replace(name, QuartzConst.TRIGGER_KEY_PREFIX, ""));
}
18
Source : TriggerCenterImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
/**
* 删除一个trigger
*
* @param triggerKey
* @return
*/
@Override
public boolean removeTrigger(TriggerKey triggerKey) {
boolean opResult = true;
try {
clusterScheduler.unscheduleJob(triggerKey);
} catch (SchedulerException e) {
LOGGER.error(e.getMessage(), e);
opResult = false;
}
return opResult;
}
18
Source : QuartzUtils.java
with Apache License 2.0
from quartzweb
with Apache License 2.0
from quartzweb
public static void removeTrigger(String triggerName, String triggerGroup, Scheduler scheduler) throws SchedulerException {
TriggerKey triggerKey = getTriggerKey(triggerName, triggerGroup);
scheduler.unscheduleJob(triggerKey);
}
18
Source : QuartzUtils.java
with Apache License 2.0
from quartzweb
with Apache License 2.0
from quartzweb
/**
* 核查Trigger在scheduler是否存在
* 存在true
* 不存在false
*
* @param scheduler
* @param triggerName
* @param triggerGroup
* @return
* @throws SchedulerException
*/
public static boolean checkTriggerExists(String triggerName, String triggerGroup, Scheduler scheduler) throws SchedulerException {
TriggerKey triggerKey = getTriggerKey(triggerName, triggerGroup);
return scheduler.checkExists(triggerKey);
}
18
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
/**
* pause
*
* @param jobName
* @param jobGroup
* @return
* @throws SchedulerException
*/
public static boolean pauseJob(String jobName, String jobGroup) throws SchedulerException {
// TriggerKey : name + group
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
boolean result = false;
if (checkExists(jobName, jobGroup)) {
scheduler.pauseTrigger(triggerKey);
result = true;
logger.info(">>>>>>>>>>> pauseJob success, triggerKey:{}", triggerKey);
} else {
logger.info(">>>>>>>>>>> pauseJob fail, triggerKey:{}", triggerKey);
}
return result;
}
18
Source : JobClassMeta.java
with Apache License 2.0
from morcble
with Apache License 2.0
from morcble
public clreplaced JobClreplacedMeta {
private Long id;
private Method method;
private Object managedBean;
private JobKey jobKey;
private TriggerKey triggerKey;
private String jobName;
private String groupName;
private Clreplaced<org.quartz.Job> jobClreplaced;
public TriggerKey getTriggerKey() {
return triggerKey;
}
void setTriggerKey(TriggerKey triggerKey) {
this.triggerKey = triggerKey;
}
public JobKey getJobKey() {
return jobKey;
}
void setJobKey(JobKey jobKey) {
this.jobKey = jobKey;
}
public String getJobName() {
return jobName;
}
void setJobName(String jobName) {
this.jobName = jobName;
}
public String getGroupName() {
return groupName;
}
void setGroupName(String groupName) {
this.groupName = groupName;
}
void setJobClreplaced(Clreplaced<org.quartz.Job> jobClreplaced) {
this.jobClreplaced = jobClreplaced;
}
/*
* 动态创建不同的job clreplaced
* @return
* @throws Exception
*/
public static JobClreplacedMeta newJobClreplacedMeta() throws Exception {
Long jobClreplacedId = IDGenerator.generateSnowflakeID();
ClreplacedPool pool = ClreplacedPool.getDefault();
CtClreplaced cc = pool.makeClreplaced("cn.regionsoft.one.schedule.jobs.RegionJob" + jobClreplacedId);
cc.addInterface(pool.get("org.quartz.Job"));
StringBuilder methodBody = new StringBuilder("public void execute(org.quartz.JobExecutionContext context) throws org.quartz.JobExecutionException{");
methodBody.append("cn.regionsoft.one.schedule.ScheduleManager.getInstance().excuteJob(\"" + jobClreplacedId + "\");");
methodBody.append("}");
CtMethod m1 = CtMethod.make(methodBody.toString(), cc);
cc.addMethod(m1);
Clreplaced<?> realClreplaced = (Clreplaced<?>) cc.toClreplaced();
cc.detach();
JobClreplacedMeta jobClreplacedMeta = new JobClreplacedMeta();
jobClreplacedMeta.id = jobClreplacedId;
jobClreplacedMeta.jobClreplaced = (Clreplaced<Job>) realClreplaced;
return jobClreplacedMeta;
}
public Long getId() {
return id;
}
public Clreplaced<org.quartz.Job> getJobClreplaced() {
return jobClreplaced;
}
public Method getMethod() {
return method;
}
void setMethod(Method method) {
this.method = method;
}
public Object getManagedBean() {
return managedBean;
}
void setManagedBean(Object managedBean) {
this.managedBean = managedBean;
}
}
18
Source : BatchJobOperatorImpl.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
private TriggerState getTriggerState(String name, String group) {
try {
List<? extends Trigger> triggers = jobService.getTriggers(name, group);
if (CollectionUtils.isEmpty(triggers)) {
return null;
}
TriggerKey key = triggers.get(0).getKey();
return factory.getScheduler().getTriggerState(key);
} catch (SchedulerException e) {
LOGGER.error("Failed to delete job", e);
throw new GriffinException.ServiceException("Failed to delete job", e);
}
}
17
Source : ScheduleTaskService.java
with Apache License 2.0
from xaecbd
with Apache License 2.0
from xaecbd
public void delTask(String jobId) throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey(jobId, "Group");
JobKey jobKey = new JobKey(jobId, "Group");
if (getScheduler().checkExists(jobKey)) {
getScheduler().pauseJob(jobKey);
getScheduler().deleteJob(jobKey);
}
if (getScheduler().checkExists(triggerKey)) {
getScheduler().pauseTrigger(triggerKey);
getScheduler().unscheduleJob(triggerKey);
}
}
17
Source : ScheduleJobServiceImpl.java
with Apache License 2.0
from wjggwm
with Apache License 2.0
from wjggwm
@Transactional
@Override
public boolean deleteJobTrigger(TriggerKey triggerKey) {
try {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
return scheduler.unscheduleJob(triggerKey);
} catch (SchedulerException e) {
throw new ServiceException(e);
}
}
17
Source : ScheduleJobServiceImpl.java
with Apache License 2.0
from wjggwm
with Apache License 2.0
from wjggwm
@Transactional
@Override
public boolean resumeJobTrigger(TriggerKey triggerKey) {
try {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler.resumeTrigger(triggerKey);
return Boolean.TRUE;
} catch (SchedulerException e) {
throw new ServiceException(e);
}
}
17
Source : AbstractJob.java
with Apache License 2.0
from warlock-china
with Apache License 2.0
from warlock-china
public abstract clreplaced AbstractJob implements DisposableBean {
private static final Logger logger = LoggerFactory.getLogger(AbstractJob.clreplaced);
protected String group;
protected String jobName;
protected String cronExpr;
protected String triggerName;
private Scheduler scheduler;
private CronTriggerImpl cronTrigger;
private TriggerKey triggerKey;
// 任务执行间隔(秒)
private long jobFireInterval = 0;
// 启动是否立即执行
private boolean executeOnStarted;
// 失败重试次数
private int retries = 0;
private AtomicInteger runCount = new AtomicInteger(0);
public void setGroup(String group) {
this.group = group;
}
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getCronExpr() {
return cronExpr;
}
public void setCronExpr(String cronExpr) {
this.cronExpr = cronExpr;
}
public boolean isExecuteOnStarted() {
return executeOnStarted;
}
public void setExecuteOnStarted(boolean executeOnStarted) {
this.executeOnStarted = executeOnStarted;
}
public String getTriggerName() {
return triggerName;
}
public void setRetries(int retries) {
this.retries = retries;
}
protected Scheduler getScheduler() {
if (scheduler == null)
scheduler = InstanceFactory.getInstance(Scheduler.clreplaced);
return scheduler;
}
public void execute() {
// 避免InstanceFactory还未初始化,就执行
InstanceFactory.waitUtilInitialized();
JobConfig schConf = JobContext.getContext().getRegistry().getConf(jobName, false);
if (currentNodeIgnore(schConf))
return;
Date beginTime = null;
Exception exception = null;
try {
// 更新状态
beginTime = getPreviousFireTime();
JobContext.getContext().getRegistry().setRuning(jobName, beginTime);
logger.debug("Job_{} at node[{}] execute begin...", jobName, JobContext.getContext().getNodeId());
// 执行
doJob(JobContext.getContext());
logger.debug("Job_{} at node[{}] execute finish", jobName, JobContext.getContext().getNodeId());
} catch (Exception e) {
// 重试
if (retries > 0)
JobContext.getContext().getRetryProcessor().submit(this, retries);
logger.error("Job_" + jobName + " execute error", e);
exception = e;
}
// 执行次数累加1
runCount.incrementAndGet();
Date nextFireTime = getTrigger().getNextFireTime();
JobContext.getContext().getRegistry().setStoping(jobName, nextFireTime, exception);
// 运行日志持久化
doJobLogPersist(schConf, exception, nextFireTime);
// 重置cronTrigger,重新获取才会更新previousFireTime,nextFireTime
cronTrigger = null;
}
/**
* @param schConf
* @param exception
* @param nextFireTime
*/
private void doJobLogPersist(JobConfig schConf, Exception exception, Date nextFireTime) {
if (JobContext.getContext().getJobLogPersistHandler() != null) {
try {
if (exception == null) {
JobContext.getContext().getJobLogPersistHandler().onSucess(schConf, nextFireTime);
} else {
JobContext.getContext().getJobLogPersistHandler().onError(schConf, nextFireTime, exception);
}
} catch (Exception e) {
logger.warn("JobLogPersistHandler run error", e);
}
}
}
private Date getPreviousFireTime() {
return getTrigger().getPreviousFireTime() == null ? new Date() : getTrigger().getPreviousFireTime();
}
protected boolean currentNodeIgnore(JobConfig schConf) {
if (parallelEnabled())
return false;
try {
if (!schConf.isActive()) {
logger.trace("Job_{} 已禁用,终止执行", jobName);
return true;
}
// 下次执行时间 < 当前时间(忽略5秒误差) 强制执行
long currentTimes = Calendar.getInstance().getTime().getTime();
if (schConf.getNextFireTime() != null && currentTimes - schConf.getNextFireTime().getTime() > 5000) {
logger.info("NextFireTime[{}] before currentTime[{}],re-join-execute task ", currentTimes, schConf.getNextFireTime().getTime());
return false;
}
// 如果执行节点不为空,且不等于当前节点
if (StringUtils.isNotBlank(schConf.getCurrentNodeId()) && !JobContext.getContext().getNodeId().equals(schConf.getCurrentNodeId())) {
logger.trace("Job_{} 当前指定执行节点:{},不匹配当前节点:{}", jobName, schConf.getCurrentNodeId(), JobContext.getContext().getNodeId());
return true;
}
if (schConf.isRunning()) {
// 如果某个节点开始了任务但是没有正常结束导致没有更新任务执行状态
if (isAbnormalabort(schConf)) {
this.cronExpr = schConf.getCronExpr();
return false;
}
logger.debug("Job_{} 其他节点正在执行,终止当前执行", jobName);
return true;
}
this.cronExpr = schConf.getCronExpr();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public void resetTriggerCronExpr(String newCronExpr) {
try {
if (getTrigger() == null)
return;
String originConExpression = getTrigger().getCronExpression();
// 判断任务时间是否更新过
if (!originConExpression.equalsIgnoreCase(newCronExpr)) {
getTrigger().setCronExpression(newCronExpr);
getScheduler().rescheduleJob(triggerKey, getTrigger());
getScheduler().resumeTrigger(triggerKey);
logger.info("Job_{} CronExpression changed, origin:{},current:{}", jobName, originConExpression, newCronExpr);
}
} catch (Exception e) {
logger.error("checkConExprChange error", e);
}
}
/**
* 判断是否异常中断运行状态()
* @param schConf
* @return
*/
public boolean isAbnormalabort(JobConfig schConf) {
if (schConf.getLastFireTime() == null)
return false;
// 上次开始执行到当前执行时长
long runingTime = DateUtils.getDiffSeconds(schConf.getLastFireTime(), getTrigger().getPreviousFireTime());
// 正常阀值
// 考虑到一些长周期任务,预定一个任务执行最长周期为1800秒
long threshold = getJobFireInterval() > 1800 ? 1800 : getJobFireInterval();
if (runingTime > threshold) {
if (logger.isDebugEnabled())
logger.debug("Job_{} 执行时长[{}]秒,超过阀值[{}]秒,节点:{}可能发生故障,切换节点:{}", jobName, runingTime, threshold, schConf.getCurrentNodeId(), JobContext.getContext().getNodeId());
return true;
}
return false;
}
/**
* 获取任务执行间隔
* @return
* @throws SchedulerException
*/
private long getJobFireInterval() {
if (jobFireInterval == 0) {
Date nextFireTime = getTrigger().getNextFireTime();
Date previousFireTime = getTrigger().getPreviousFireTime();
jobFireInterval = (nextFireTime.getTime() - previousFireTime.getTime()) / 1000;
}
return jobFireInterval;
}
private CronTriggerImpl getTrigger() {
try {
if (this.cronTrigger == null) {
if (getScheduler() == null)
return null;
Trigger trigger = getScheduler().getTrigger(triggerKey);
this.cronTrigger = (CronTriggerImpl) trigger;
}
} catch (SchedulerException e) {
logger.error("Job_" + jobName + " Invoke getTrigger error", e);
}
return cronTrigger;
}
@Override
public void destroy() throws Exception {
JobContext.getContext().getRegistry().unregister(jobName);
}
public void init() {
triggerName = jobName + "Trigger";
triggerKey = new TriggerKey(triggerName, group);
JobConfig jobConfg = new JobConfig(group, jobName, cronExpr);
// 从持久化配置合并
if (JobContext.getContext().getConfigPersistHandler() != null) {
JobContext.getContext().getConfigPersistHandler().merge(jobConfg);
}
JobContext.getContext().getRegistry().register(jobConfg);
logger.info("Initialized Job_{} OK!!", jobName);
}
public void afterInitialized() {
// 启动重试任务
if (retries > 0) {
JobContext.getContext().startRetryProcessor();
}
// 这里不能提前去拿下一次更新时间,否则真正执行后下次执行时间不更新
// if(executeOnStarted)return;
// JobConfig conf = JobContext.getContext().getRegistry().getConf(jobName,false);
// Date nextFireTime = getNextFireTime();
// if(nextFireTime != null){
// conf.setNextFireTime(nextFireTime);
// JobContext.getContext().getRegistry().updateJobConfig(conf);
// }
}
/**
* 是否开启并行处理
* @return
*/
public abstract boolean parallelEnabled();
public abstract void doJob(JobContext context) throws Exception;
}
17
Source : SchedulerServiceImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
@Override
public boolean unscheduleJob(TriggerKey triggerKey) {
try {
boolean opResult = scheduler.checkExists(triggerKey);
if (opResult) {
opResult = scheduler.unscheduleJob(triggerKey);
} else {
return true;
}
return opResult;
} catch (SchedulerException e) {
LOGGER.error("Unschedule job trigger group {}, trigger name {} failed.", triggerKey.getGroup(), triggerKey.getName(), e);
return false;
}
}
17
Source : SchedulerServiceImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
@Override
public boolean removeTrigger(TriggerKey triggerKey) {
try {
boolean exists = scheduler.checkExists(triggerKey);
if (exists) {
return scheduler.unscheduleJob(triggerKey);
}
} catch (SchedulerException e) {
LOGGER.error("Remove Trigger:{}-{} failed.", triggerKey.getGroup(), triggerKey.getName(), e);
}
return false;
}
17
Source : TriggerCenterImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
/**
* 暂停trigger
*
* @param triggerKey
* @return 操作成功返回true,否则返回false;
*/
@Override
public boolean pauseTrigger(TriggerKey triggerKey) {
boolean opResult = true;
try {
clusterScheduler.pauseTrigger(triggerKey);
} catch (SchedulerException e) {
LOGGER.error(e.getMessage(), e);
opResult = false;
}
return opResult;
}
17
Source : TriggerCenterImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
/**
* 恢复暂停的trigger
*
* @param triggerKey
*/
@Override
public boolean resumeTrigger(TriggerKey triggerKey) {
boolean opResult = true;
try {
clusterScheduler.resumeTrigger(triggerKey);
} catch (SchedulerException e) {
LOGGER.error(e.getMessage(), e);
opResult = false;
}
return opResult;
}
17
Source : ClusterInfoServiceImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
private boolean removeClusterCollection(String clusterName) {
TriggerKey triggerKey = TriggerKey.triggerKey(clusterName + "Trigger", clusterName);
return schedulerCenter.unscheduleJob(triggerKey);
}
17
Source : QuartzUtils.java
with Apache License 2.0
from quartzweb
with Apache License 2.0
from quartzweb
public static void resumeTrigger(String triggerName, String triggerGroup, Scheduler scheduler) throws SchedulerException {
TriggerKey triggerKey = getTriggerKey(triggerName, triggerGroup);
scheduler.resumeTrigger(triggerKey);
}
17
Source : QuartzUtils.java
with Apache License 2.0
from quartzweb
with Apache License 2.0
from quartzweb
public static void pauseTrigger(String triggerName, String triggerGroup, Scheduler scheduler) throws SchedulerException {
TriggerKey triggerKey = getTriggerKey(triggerName, triggerGroup);
scheduler.pauseTrigger(triggerKey);
}
17
Source : ScheduleService.java
with GNU General Public License v2.0
from metersphere
with GNU General Public License v2.0
from metersphere
public void updateSchedule(Schedule request) {
this.editSchedule(request);
JobKey jobKey = null;
TriggerKey triggerKey = null;
Clreplaced clazz = null;
if (ScheduleGroup.TEST_PLAN_TEST.name().equals(request.getGroup())) {
jobKey = TestPlanTestJob.getJobKey(request.getResourceId());
triggerKey = TestPlanTestJob.getTriggerKey(request.getResourceId());
clazz = TestPlanTestJob.clreplaced;
} else {
// 默认为情景
jobKey = ApiScenarioTestJob.getJobKey(request.getResourceId());
triggerKey = ApiScenarioTestJob.getTriggerKey(request.getResourceId());
clazz = ApiScenarioTestJob.clreplaced;
}
this.addOrUpdateCronJob(request, jobKey, triggerKey, clazz);
}
17
Source : JobServiceImpl.java
with MIT License
from javabypatel
with MIT License
from javabypatel
/**
* Remove the indicated Trigger from the scheduler.
* If the related job does not have any other triggers, and the job is not durable, then the job will also be deleted.
*/
@Override
public boolean unScheduleJob(String jobName) {
System.out.println("Request received for Unscheduleding job.");
String jobKey = jobName;
TriggerKey tkey = new TriggerKey(jobKey);
System.out.println("Parameters received for unscheduling job : tkey :" + jobKey);
try {
boolean status = schedulerFactoryBean.getScheduler().unscheduleJob(tkey);
System.out.println("Trigger replacedociated with jobKey :" + jobKey + " unscheduled with status :" + status);
return status;
} catch (SchedulerException e) {
System.out.println("SchedulerException while unscheduling job with key :" + jobKey + " message :" + e.getMessage());
e.printStackTrace();
return false;
}
}
17
Source : JobServiceImpl.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
void addJob(TriggerKey tk, AbstractJob job, ProcessType type) throws Exception {
JobDetail jobDetail = addJobDetail(tk, job);
Trigger trigger = genTriggerInstance(tk, jobDetail, job, type);
factory.getScheduler().scheduleJob(trigger);
}
17
Source : BatchJobOperatorImpl.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
@Override
@Transactional(rollbackFor = Exception.clreplaced)
public AbstractJob add(AbstractJob job, GriffinMeasure measure) throws Exception {
validateParams(job, measure);
String qName = jobService.getQuartzName(job);
String qGroup = jobService.getQuartzGroup();
TriggerKey triggerKey = jobService.getTriggerKeyIfValid(qName, qGroup);
BatchJob batchJob = genBatchJobBean(job, qName, qGroup);
batchJob = batchJobRepo.save(batchJob);
jobService.addJob(triggerKey, batchJob, BATCH);
return job;
}
16
Source : ScheduleTaskService.java
with Apache License 2.0
from xaecbd
with Apache License 2.0
from xaecbd
public String getJobStatus(String triggerName) throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, "Group");
TriggerState status = getScheduler().getTriggerState(triggerKey);
return status.toString();
}
16
Source : ScheduleJobServiceImpl.java
with Apache License 2.0
from wjggwm
with Apache License 2.0
from wjggwm
@Transactional
@Override
public boolean pauseJobTrigger(TriggerKey triggerKey) {
try {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler.pauseTrigger(triggerKey);
return Boolean.TRUE;
} catch (SchedulerException e) {
throw new ServiceException(e);
}
}
16
Source : ScheduleJobServiceImpl.java
with Apache License 2.0
from wjggwm
with Apache License 2.0
from wjggwm
@Override
public ScheduleJobEnreplacedy getScheduleJobEnreplacedy(ScheduleJobEnreplacedy job) {
try {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
JobKey jobKey = JobKey.jobKey(job.getJobName(), job.getJobGroup());
TriggerKey triggerKey = job.getTriggerKey();
Trigger trigger = scheduler.getTrigger(triggerKey);
this.wrapScheduleJob(job, scheduler, jobKey, trigger);
} catch (SchedulerException e) {
logger.error("获取job失败", e);
throw new ServiceException("获取job失败", e);
}
return job;
}
16
Source : ScheduleJobEntity.java
with Apache License 2.0
from wjggwm
with Apache License 2.0
from wjggwm
@Alias("scheduleJobEnreplacedy")
public clreplaced ScheduleJobEnreplacedy extends BaseEnreplacedy {
/**
* @Fields serialVersionUID : TODO
*/
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(ScheduleJobEnreplacedy.clreplaced);
/*
* 任务名称
*/
private String jobName;
/*
* 任务分组
*/
private String jobGroup;
private String triggerName;
private String triggerGroup;
/*
* 任务状态:
* NONE:未知
* NORMAL:正常无任务
* PAUSED:暂停
* COMPLETE:完成
* ERROR:异常
* BLOCKED:等待运行,阻塞
*/
private String triggerStatus;
/*
* 下一次触发时间
*/
private Date nextFireTime;
/*
* 任务运行时间表达式
*/
private String cronExpression;
/*
* 执行具体任务的任务类名
*/
private String jobClreplacedName;
/*
* 任务描述
*/
private String jobDesc;
/*
* 开始时间
*/
private Date startDate;
/*
* 结束时间
*/
private Date endDate;
/*
* 创建时间
*/
private Date createTime;
/*
* 更新时间
*/
private Date updateTime;
/*
* 执行具体任务的任务类,必须继承自org.quartz.Job
* transient:不参与序列化
*/
private transient Clreplaced<? extends Job> jobClreplaced;
private transient TriggerKey triggerKey;
private transient JobDetail jobDetail;
private transient JobKey jobKey;
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getJobGroup() {
return jobGroup;
}
public void setJobGroup(String jobGroup) {
this.jobGroup = jobGroup;
}
public String getTriggerName() {
return triggerName;
}
public void setTriggerName(String triggerName) {
this.triggerName = triggerName;
}
public String getTriggerGroup() {
return triggerGroup;
}
public void setTriggerGroup(String triggerGroup) {
this.triggerGroup = triggerGroup;
}
public String getTriggerStatus() {
return triggerStatus;
}
public void setTriggerStatus(String triggerStatus) {
this.triggerStatus = triggerStatus;
}
public Date getNextFireTime() {
return nextFireTime;
}
public void setNextFireTime(Date nextFireTime) {
this.nextFireTime = nextFireTime;
}
public String getCronExpression() {
return cronExpression;
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public String getJobClreplacedName() {
return jobClreplacedName;
}
public void setJobClreplacedName(String jobClreplacedName) {
this.jobClreplacedName = jobClreplacedName;
}
public String getJobDesc() {
return jobDesc;
}
public void setJobDesc(String jobDesc) {
this.jobDesc = jobDesc;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/*
* 根据jobClreplacedName动态初始化JobClreplaced
*/
public Clreplaced<? extends Job> getJobClreplaced() {
try {
if (jobClreplaced == null) {
jobClreplaced = Clreplaced.forName(getJobClreplacedName()).replacedubclreplaced(Job.clreplaced);
}
} catch (ClreplacedNotFoundException e) {
logger.error("获取job执行类异常", e);
}
return jobClreplaced;
}
public void setJobClreplaced(Clreplaced<? extends Job> jobClreplaced) {
this.jobClreplaced = jobClreplaced;
this.jobClreplacedName = jobClreplaced.getName();
}
/**
* @replacedle: getTriggerKey
* @Description: 生成triggerKey
* @return TriggerKey
* @throws
*/
public TriggerKey getTriggerKey() {
if (triggerKey == null && this.triggerName != null && this.triggerGroup != null) {
triggerKey = TriggerKey.triggerKey(getTriggerName(), getTriggerGroup());
}
return triggerKey;
}
/**
* @replacedle: getJobDetail
* @Description: 生成jobDetail
* @return JobDetail
* @throws
*/
public JobDetail getJobDetail() {
if (jobDetail == null) {
jobDetail = newJob(getJobClreplaced()).withIdenreplacedy(getJobName(), getJobGroup()).withDescription(getJobDesc()).storeDurably(true).build();
}
return jobDetail;
}
public JobKey getJobKey() {
if (jobKey == null) {
jobKey = JobKey.jobKey(getJobName(), getJobGroup());
}
return jobKey;
}
}
16
Source : QuartzManager.java
with Apache License 2.0
from WeBankFinTech
with Apache License 2.0
from WeBankFinTech
/**
* remove
*
* @param jobName remove job
* @param jobGroupName job group name
* @param triggerName trigger name
* @param triggerGroupName trigger group name
*/
public RetCode removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
scheduler.pauseTrigger(triggerKey);
scheduler.unscheduleJob(triggerKey);
if (scheduler.deleteJob(JobKey.jobKey(jobName, jobGroupName))) {
return ConstantsHelper.SUCCESS;
}
return ConstantsHelper.FAIL;
}
16
Source : SchedulerServiceImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
@Override
public boolean resumeTrigger(TriggerKey triggerKey) {
try {
boolean exists = scheduler.checkExists(triggerKey);
if (exists) {
scheduler.resumeTrigger(triggerKey);
return true;
}
LOGGER.error("Resume Trigger:{}-{} failed because triggerKey not exists.", triggerKey.getGroup(), triggerKey.getName());
return false;
} catch (Exception e) {
LOGGER.error("Resume Trigger:{}-{} failed.", triggerKey.getGroup(), triggerKey.getName(), e);
return false;
}
}
16
Source : SchedulerServiceImpl.java
with Apache License 2.0
from ucarGroup
with Apache License 2.0
from ucarGroup
@Override
public boolean pauseTrigger(TriggerKey triggerKey) {
try {
boolean exists = scheduler.checkExists(triggerKey);
if (exists) {
scheduler.pauseTrigger(triggerKey);
return true;
}
} catch (SchedulerException e) {
LOGGER.error("Pause Trigger:{}-{} failed.", triggerKey.getGroup(), triggerKey.getName(), e);
}
return false;
}
16
Source : QuartzManager.java
with Apache License 2.0
from quartzweb
with Apache License 2.0
from quartzweb
public Trigger getTrigger(String schedulerName, String triggerName, String triggerGroup) throws SchedulerException {
replacedert.notEmpty(triggerName, "triggerName can not be empty");
replacedert.notEmpty(triggerGroup, "triggerGroup can not be empty");
Scheduler scheduler = this.getreplacedertScheduler(schedulerName);
TriggerKey triggerKey = QuartzUtils.getTriggerKey(triggerName, triggerGroup);
Trigger trigger = scheduler.getTrigger(triggerKey);
return trigger;
}
16
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
/**
* rescheduleJob
*
* @param jobGroup
* @param jobName
* @param cronExpression
* @return
* @throws SchedulerException
*/
public static boolean rescheduleJob(String jobGroup, String jobName, String cronExpression) throws SchedulerException {
// TriggerKey valid if_exists
if (!checkExists(jobName, jobGroup)) {
logger.info(">>>>>>>>>>> rescheduleJob fail, job not exists, JobGroup:{}, JobName:{}", jobGroup, jobName);
return false;
}
// TriggerKey : name + group
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
CronTrigger oldTrigger = (CronTrigger) scheduler.getTrigger(triggerKey);
if (oldTrigger != null) {
// avoid repeat
String oldCron = oldTrigger.getCronExpression();
if (oldCron.equals(cronExpression)) {
return true;
}
// CronTrigger : TriggerKey + cronExpression
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
oldTrigger = oldTrigger.getTriggerBuilder().withIdenreplacedy(triggerKey).withSchedule(cronScheduleBuilder).build();
// rescheduleJob
scheduler.rescheduleJob(triggerKey, oldTrigger);
} else {
// CronTrigger : TriggerKey + cronExpression
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdenreplacedy(triggerKey).withSchedule(cronScheduleBuilder).build();
// JobDetail-JobDataMap fresh
JobKey jobKey = new JobKey(jobName, jobGroup);
JobDetail jobDetail = scheduler.getJobDetail(jobKey);
/*JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.clear();
jobDataMap.putAll(JacksonUtil.readValue(jobInfo.getJobData(), Map.clreplaced));*/
// Trigger fresh
HashSet<Trigger> triggerSet = new HashSet<Trigger>();
triggerSet.add(cronTrigger);
scheduler.scheduleJob(jobDetail, triggerSet, true);
}
logger.info(">>>>>>>>>>> resumeJob success, JobGroup:{}, JobName:{}", jobGroup, jobName);
return true;
}
16
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
/**
* addJob
*
* @param jobName
* @param jobGroup
* @param cronExpression
* @return
* @throws SchedulerException
*/
public static boolean addJob(String jobName, String jobGroup, String cronExpression) throws SchedulerException {
// TriggerKey : name + group
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
JobKey jobKey = new JobKey(jobName, jobGroup);
// TriggerKey valid if_exists
if (checkExists(jobName, jobGroup)) {
logger.info(">>>>>>>>> addJob fail, job already exist, jobGroup:{}, jobName:{}", jobGroup, jobName);
return false;
}
// CronTrigger : TriggerKey + cronExpression // withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdenreplacedy(triggerKey).withSchedule(cronScheduleBuilder).build();
// JobDetail : jobClreplaced
// Clreplaced.forName(jobInfo.getJobClreplaced());
Clreplaced<? extends Job> jobClreplaced_ = RemoteHttpJobBean.clreplaced;
JobDetail jobDetail = JobBuilder.newJob(jobClreplaced_).withIdenreplacedy(jobKey).build();
/*if (jobInfo.getJobData()!=null) {
JobDataMap jobDataMap = jobDetail.getJobDataMap();
jobDataMap.putAll(JacksonUtil.readValue(jobInfo.getJobData(), Map.clreplaced));
// JobExecutionContext context.getMergedJobDataMap().get("mailGuid");
}*/
// schedule : jobDetail + cronTrigger
Date date = scheduler.scheduleJob(jobDetail, cronTrigger);
logger.info(">>>>>>>>>>> addJob success, jobDetail:{}, cronTrigger:{}, date:{}", jobDetail, cronTrigger, date);
return true;
}
16
Source : XxlJobDynamicScheduler.java
with Apache License 2.0
from open-capacity-platform
with Apache License 2.0
from open-capacity-platform
// ---------------------- schedule util ----------------------
/**
* fill job info
*
* @param jobInfo
*/
public static void fillJobInfo(XxlJobInfo jobInfo) {
// TriggerKey : name + group
String group = String.valueOf(jobInfo.getJobGroup());
String name = String.valueOf(jobInfo.getId());
TriggerKey triggerKey = TriggerKey.triggerKey(name, group);
try {
Trigger trigger = scheduler.getTrigger(triggerKey);
TriggerState triggerState = scheduler.getTriggerState(triggerKey);
// parse params
if (trigger != null && trigger instanceof CronTriggerImpl) {
String cronExpression = ((CronTriggerImpl) trigger).getCronExpression();
jobInfo.setJobCron(cronExpression);
}
// JobKey jobKey = new JobKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
// JobDetail jobDetail = scheduler.getJobDetail(jobKey);
// String jobClreplaced = jobDetail.getJobClreplaced().getName();
if (triggerState != null) {
jobInfo.setJobStatus(triggerState.name());
}
} catch (SchedulerException e) {
logger.error(e.getMessage(), e);
}
}
16
Source : TaskInnerServiceSMOImpl.java
with Apache License 2.0
from java110
with Apache License 2.0
from java110
/**
* 停止任务
*
* @param taskDto
* @return
*/
public int stopTask(@RequestBody TaskDto taskDto) {
try {
String jobName = prefixJobName + taskDto.getTaskId();
String triggerName = prefixJobName + taskDto.getTaskId();
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TaskSystemJob.JOB_GROUP_NAME);
// 停止触发器
scheduler.pauseTrigger(triggerKey);
// 移除触发器
scheduler.unscheduleJob(triggerKey);
JobKey jobKey = new JobKey(jobName, TaskSystemJob.JOB_GROUP_NAME);
// 删除任务
scheduler.deleteJob(jobKey);
Map paramIn = new HashMap();
paramIn.put("taskId", taskDto.getTaskId());
paramIn.put("state", "001");
paramIn.put("statusCd", "0");
taskServiceDaoImpl.updateTaskInfoInstance(paramIn);
} catch (Exception e) {
logger.error("启动侦听失败", e);
return 0;
}
return 1;
}
16
Source : ScheduleJobResult.java
with Apache License 2.0
from DevopsJK
with Apache License 2.0
from DevopsJK
/**
* 新建计划任务结果返回值类
* Copyright 2014-2015 the original BZTWT
* Created by QianLong on 2014/7/11 0011.
*/
@Data
public clreplaced ScheduleJobResult implements Serializable {
private TriggerKey triggerKey;
private JobKey jobKey;
private JobDetail jobDetail;
private Trigger trigger;
private ScheduleJobStatus scheduleJobStatus;
}
16
Source : JobInstance.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
private JobDetail addJobDetail(TriggerKey tk, String pJobName) throws SchedulerException, IOException {
Scheduler scheduler = factory.getScheduler();
JobKey jobKey = jobKey(tk.getName(), tk.getGroup());
JobDetail jobDetail;
Boolean isJobKeyExist = scheduler.checkExists(jobKey);
if (isJobKeyExist) {
jobDetail = scheduler.getJobDetail(jobKey);
} else {
jobDetail = newJob(SparkSubmitJob.clreplaced).storeDurably().withIdenreplacedy(jobKey).build();
}
setJobDataMap(jobDetail, pJobName);
scheduler.addJob(jobDetail, isJobKeyExist);
return jobDetail;
}
16
Source : JobInstance.java
with Apache License 2.0
from apache
with Apache License 2.0
from apache
@SuppressWarnings("unchecked")
private void createJobInstance(Map<String, Object> confMap) throws Exception {
confMap = checkConfMap(confMap != null ? confMap : new HashMap<>());
Map<String, Object> config = (Map<String, Object>) confMap.get(CHECK_DONEFILE_SCHEDULE);
Long interval = TimeUtil.str2Long((String) config.get(INTERVAL));
Integer repeat = Integer.valueOf(config.get(REPEAT).toString());
String groupName = "PG";
String jobName = job.getJobName() + "_predicate_" + System.currentTimeMillis();
TriggerKey tk = triggerKey(jobName, groupName);
if (factory.getScheduler().checkExists(tk)) {
throw new GriffinException.ConflictException(QUARTZ_JOB_ALREADY_EXIST);
}
String triggerKey = (String) confMap.get(TRIGGER_KEY);
saveJobInstance(jobName, groupName, triggerKey);
createJobInstance(tk, interval, repeat, jobName);
}
15
Source : QuartzManager.java
with Apache License 2.0
from Xiao-Y
with Apache License 2.0
from Xiao-Y
/**
* 更新 cron 表达式,如果触发器不存在,则新生成一个
*
* @param job 必要参数:JobName,JobGroup,CronExpression
* @return void
* @author LiuYongTao
* @date 2019/8/16 10:36
*/
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.clreplaced)
public void updateCron(ScheduleJobVo job) throws Exception {
String jobName = job.getJobName();
String jobGroup = job.getJobGroup();
if (!this.checkJob(jobName, jobGroup)) {
return;
}
String cronExpression = job.getCronExpression();
if (ToolsUtils.isEmpty(cronExpression)) {
log.error("JobGroup:{}, JobName:{}, cron 表达式不能为空", jobGroup, jobName);
throw new RuntimeException(jobName + "-" + jobGroup + ",cron 表达式不能为空");
}
Scheduler scheduler = schedulerFactoryBean.getScheduler();
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// 设置调度的时间规则
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
if (trigger == null) {
log.warn("jobGroup{},jobName:{},trigger 不存在,创建新 trigger", jobGroup, jobName);
trigger = TriggerBuilder.newTrigger().withIdenreplacedy(jobName, jobGroup).withSchedule(scheduleBuilder).build();
} else {
// 按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdenreplacedy(triggerKey).withSchedule(scheduleBuilder).build();
}
// 按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
}
15
Source : ScheduleJobServiceImpl.java
with Apache License 2.0
from wjggwm
with Apache License 2.0
from wjggwm
@Transactional
@Override
public boolean updateJobTrigger(ScheduleJobEnreplacedy job) {
try {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
// 获取触发器标识
TriggerKey triggerKey = job.getTriggerKey();
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// Trigger已存在,更新相应的定时设置
// 表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
// 按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().forJob(job.getJobKey()).withIdenreplacedy(triggerKey).startAt(// job开始日期
job.getStartDate()).endAt(// job结束日期
job.getEndDate()).withSchedule(scheduleBuilder).build();
// 按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
return Boolean.TRUE;
} catch (Exception e) {
throw new ServiceException(e);
}
}
15
Source : QuartzManage.java
with Apache License 2.0
from vip-efactory
with Apache License 2.0
from vip-efactory
/**
* 恢复一个job
*
* @param quartzJob /
*/
public void resumeJob(QuartzJob quartzJob) {
try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + "@" + TenantHolder.getTenantId() + "@" + quartzJob.getId());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务
if (trigger == null) {
addJob(quartzJob);
}
JobKey jobKey = JobKey.jobKey(JOB_NAME + "@" + TenantHolder.getTenantId() + "@" + quartzJob.getId());
scheduler.resumeJob(jobKey);
} catch (Exception e) {
log.error("恢复定时任务失败", e);
throw new BadRequestException("恢复定时任务失败");
}
}
15
Source : ScheduleService.java
with GNU General Public License v2.0
from metersphere
with GNU General Public License v2.0
from metersphere
public void addOrUpdateCronJob(Schedule request, JobKey jobKey, TriggerKey triggerKey, Clreplaced clazz) {
Boolean enable = request.getEnable();
String cronExpression = request.getValue();
if (enable != null && enable && StringUtils.isNotBlank(cronExpression)) {
try {
scheduleManager.addOrUpdateCronJob(jobKey, triggerKey, clazz, cronExpression, scheduleManager.getDefaultJobDataMap(request.getResourceId(), cronExpression, SessionUtils.getUser().getId()));
} catch (SchedulerException e) {
LogUtil.error(e.getMessage(), e);
MSException.throwException("定时任务开启异常");
}
} else {
try {
scheduleManager.removeJob(jobKey, triggerKey);
} catch (Exception e) {
MSException.throwException("定时任务关闭异常");
}
}
}
15
Source : QuartzManager1.java
with GNU General Public License v3.0
from guowenzhuang
with GNU General Public License v3.0
from guowenzhuang
/**
* 功能: 移除一个任务
*
* @param jobName
* @param jobGroupName
* @param triggerName
* @param triggerGroupName
*/
public void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) {
try {
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
// 停止触发器
scheduler.pauseTrigger(triggerKey);
// 移除触发器
scheduler.unscheduleJob(triggerKey);
// 删除任务
scheduler.deleteJob(JobKey.jobKey(jobName, jobGroupName));
System.out.println("removeJob:" + JobKey.jobKey(jobName));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
15
Source : JobService.java
with MIT License
from enilu
with MIT License
from enilu
/**
* 添加任务
*
* @param job
* @throws SchedulerException
*/
public boolean addJob(QuartzJob job) throws SchedulerException {
logger.info("新增任务Id:{}, name:{}", job.getJobName(), job.getDescription());
if (job == null || job.isDisabled()) {
return false;
}
if (!TaskUtils.isValidExpression(job.getCronExpression())) {
logger.error("时间表达式错误(" + job.getJobName() + "," + job.getJobGroup() + ")," + job.getCronExpression());
return false;
} else {
// 任务名称和任务组设置规则: // 名称:task_1 .. // 组 :group_1 ..
TriggerKey triggerKey = TriggerKey.triggerKey(job.getJobName(), job.getJobGroup());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
// 不存在,创建一个
if (null == trigger) {
// 是否允许并发执行
Clreplaced<? extends Job> clazz = job.isConcurrent() ? BaseJob.clreplaced : NoConurrentBaseJob.clreplaced;
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdenreplacedy(job.getJobName(), job.getJobGroup()).build();
jobDetail.getJobDataMap().put("job", job);
// 表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
// 按新的表达式构建一个新的trigger
trigger = TriggerBuilder.newTrigger().withIdenreplacedy(triggerKey).withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail, trigger);
} else {
// trigger已存在,则更新相应的定时设置
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
// 按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdenreplacedy(triggerKey).withSchedule(scheduleBuilder).build();
// 按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
}
}
return true;
}
See More Examples