private static JobKey jobKey() { return JobKey.jobKey(BACKUP_SCHEDULER_TIMER_NAME, BACKUP_SCHEDULER_TIMER_GROUP); }
/** * 获取jobKey */ private static JobKey getJobKey(Long jobId) { return JobKey.jobKey(JOB_NAME + jobId); }
private static JobKey jobKey(final Class<?> jobType) { return JobKey.jobKey(jobType.getSimpleName(), jobType.getPackage().getName()); }
private static JobKey jobKey(final Method method) { Class<?> klass = method.getDeclaringClass(); StringBuilder classname = new StringBuilder(klass.getSimpleName()); klass = klass.getDeclaringClass(); while (klass != null) { classname.insert(0, klass.getSimpleName() + "$"); klass = klass.getDeclaringClass(); } return JobKey.jobKey(classname + "." + method.getName(), method.getDeclaringClass().getPackage().getName()); }
public boolean interruptJob(String jobName, String jobGroupName) throws Exception { try { return scheduler.interrupt(jobKey(jobName, jobGroupName)); } catch (Exception e) { throw newPlainException(e); } }
public boolean deleteJob(String jobName, String jobGroupName) throws Exception { try { return scheduler.deleteJob(jobKey(jobName, jobGroupName)); } catch (Exception e) { throw newPlainException(e); } }
public void pauseJob(String jobName, String jobGroup) throws Exception { try { scheduler.pauseJob(jobKey(jobName, jobGroup)); } catch (Exception e) { throw newPlainException(e); } }
public void resumeJob(String jobName, String jobGroup) throws Exception { try { scheduler.resumeJob(jobKey(jobName, jobGroup)); } catch (Exception e) { throw newPlainException(e); } }
/** * Schedule the provided job and trigger. This method will setup a default name and group for * both. * * @param jobClass A jobClass to setup and schedule. * @param configurer A callback to setup the job and trigger. * @return This quartz instance. */ public Quartz with(final Class<? extends Job> jobClass, final BiConsumer<JobBuilder, TriggerBuilder<Trigger>> configurer) { requireNonNull(jobClass, "Job class is required."); JobBuilder job = JobBuilder.newJob(jobClass) .withIdentity( JobKey.jobKey(jobClass.getSimpleName(), jobClass.getPackage().getName()) ); TriggerBuilder<Trigger> trigger = TriggerBuilder.newTrigger() .withIdentity( TriggerKey.triggerKey(jobClass.getSimpleName(), jobClass.getPackage().getName()) ); configurer.accept(job, trigger); return with(job.build(), trigger.build()); }
/** * Schedule the provided job and trigger. This method will setup a default name and group for * both. * * @param jobClass A jobClass to setup and schedule. * @param configurer A callback to setup the trigger. * @return This quartz instance. */ public Quartz with(final Class<? extends Job> jobClass, final Consumer<TriggerBuilder<Trigger>> configurer) { requireNonNull(jobClass, "Job class is required."); JobBuilder job = JobBuilder.newJob(jobClass) .withIdentity( JobKey.jobKey(jobClass.getSimpleName(), jobClass.getPackage().getName()) ); TriggerBuilder<Trigger> trigger = TriggerBuilder.newTrigger() .withIdentity( TriggerKey.triggerKey(jobClass.getSimpleName(), jobClass.getPackage().getName()) ); configurer.accept(trigger); return with(job.build(), trigger.build()); }
@Override public void cancelSchedule(String deadlineName, String scheduleId) { runOnPrepareCommitOrNow(() -> cancelSchedule(jobKey(scheduleId, deadlineName))); }
private void unscheduleJob(String pipelineName) { try { JobKey jobKey = jobKey(pipelineName, PIPELINE_TRIGGGER_TIMER_GROUP); if (quartzScheduler.getJobDetail(jobKey) != null) { quartzScheduler.unscheduleJob(triggerKey(pipelineName, PIPELINE_TRIGGGER_TIMER_GROUP)); quartzScheduler.deleteJob(jobKey); } } catch (SchedulerException e) { LOG.error("Could not unschedule quartz jobs", e); } }
public CompositeData getJobDetail(String jobName, String jobGroupName) throws Exception { try { JobDetail jobDetail = scheduler.getJobDetail(jobKey(jobName, jobGroupName)); return JobDetailSupport.toCompositeData(jobDetail); } catch (Exception e) { throw newPlainException(e); } }
public List<CompositeData> getTriggersOfJob(String jobName, String jobGroupName) throws Exception { try { JobKey jobKey = jobKey(jobName, jobGroupName); return TriggerSupport.toCompositeList(scheduler.getTriggersOfJob(jobKey)); } catch (Exception e) { throw newPlainException(e); } }
public void triggerJob(String jobName, String jobGroup, Map<String, String> jobDataMap) throws Exception { try { scheduler.triggerJob(jobKey(jobName, jobGroup), new JobDataMap(jobDataMap)); } catch (Exception e) { throw newPlainException(e); } }
@Override public boolean isValid(GlobalJobHandle jobHandle) { if (scheduler != null && !isTransactional()) { return true; } JobDetail jobDetail = null; try { jobDetail = scheduler.getJobDetail(jobKey(((GlobalQuartzJobHandle)jobHandle).getJobName(), ((GlobalQuartzJobHandle)jobHandle).getJobGroup())); } catch (SchedulerException e) { logger.warn("Cannot fetch job detail for job handle {}", jobHandle); } return jobDetail != null; }
@Override public void cancelSchedule(ScheduleToken scheduleToken) { if (!(scheduleToken instanceof QuartzScheduleToken)) { throw new IllegalArgumentException("The given ScheduleToken was not provided by this scheduler."); } Assert.state(initialized, () -> "Scheduler is not yet initialized"); QuartzScheduleToken reference = (QuartzScheduleToken) scheduleToken; try { if (!scheduler.deleteJob(jobKey(reference.getJobIdentifier(), reference.getGroupIdentifier()))) { logger.warn("The job belonging to this token could not be deleted."); } } catch (SchedulerException e) { throw new SchedulingException("An error occurred while cancelling a timer for a saga", e); } }
public Date scheduleJob(String jobName, String jobGroup, String triggerName, String triggerGroup) throws Exception { try { JobKey jobKey = jobKey(jobName, jobGroup); JobDetail jobDetail = scheduler.getJobDetail(jobKey); if (jobDetail == null) { throw new IllegalArgumentException("No such job: " + jobKey); } TriggerKey triggerKey = triggerKey(triggerName, triggerGroup); Trigger trigger = scheduler.getTrigger(triggerKey); if (trigger == null) { throw new IllegalArgumentException("No such trigger: " + triggerKey); } return scheduler.scheduleJob(jobDetail, trigger); } catch (Exception e) { throw newPlainException(e); } }
@Override public boolean removeJob(JobHandle jobHandle) { GlobalQuartzJobHandle quartzJobHandle = (GlobalQuartzJobHandle) jobHandle; try { boolean removed = scheduler.deleteJob(jobKey(quartzJobHandle.getJobName(), quartzJobHandle.getJobGroup())); return removed; } catch (SchedulerException e) { throw new RuntimeException("Exception while removing job", e); } catch (RuntimeException e) { SchedulerMetaData metadata; try { metadata = scheduler.getMetaData(); if (metadata.getJobStoreClass().isAssignableFrom(JobStoreCMT.class)) { return true; } } catch (SchedulerException e1) { } throw e; } }
private void scheduleJob(Scheduler scheduler, PipelineConfig pipelineConfig) { TimerConfig timer = pipelineConfig.getTimer(); if (timer != null) { try { CronTrigger trigger = newTrigger() .withIdentity(triggerKey(CaseInsensitiveString.str(pipelineConfig.name()), PIPELINE_TRIGGGER_TIMER_GROUP)) .withSchedule(cronSchedule(new CronExpression(timer.getTimerSpec()))) .build(); JobDetail jobDetail = newJob() .withIdentity(jobKey(CaseInsensitiveString.str(pipelineConfig.name()), PIPELINE_TRIGGGER_TIMER_GROUP)) .ofType(SchedulePipelineQuartzJob.class) .usingJobData(jobDataMapFor(pipelineConfig)) .build(); scheduler.scheduleJob(jobDetail, trigger); LOG.info("Initialized timer for pipeline {} with {}", pipelineConfig.name(), timer.getTimerSpec()); } catch (ParseException e) { showPipelineError(pipelineConfig, e, "Bad timer specification for timer in Pipeline: " + pipelineConfig.name(), "Cannot schedule pipeline using the timer"); } catch (SchedulerException e) { showPipelineError(pipelineConfig, e, "Could not register pipeline '" + pipelineConfig.name() + "' with timer", ""); } } }