[英]how to delete specific trigger for a scheduled job
我已经创建了工作,例如使用一个 jobName 和不同的键创建(请参阅 JobDataMap)
CronTriggerImpl trigger = new CronTriggerImpl();
JobDetailImpl jobDetail = null;
trigger.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING);
trigger.setName(getUniqueJobId());
trigger.setCronExpression(cronExpression);
trigger.setTimeZone(timeZone);
JobDataMap dataMap = new JobDataMap();
dataMap.put("jobName", "job");
dataMap.put("id", "key");
trigger.setJobDataMap(jobDataMap);
jobDetail = new JobDetailImpl();
jobDetail.setName(getUniqueJobId());
jobDetail.setJobDataMap(jobDataMap);
jobDetail.setJobClass(JobLauncherDetails.class);
scheduler.scheduleJob(jobDetail, trigger);
它工作正常,但我想删除特定的触发器如何删除我看到的费用来源但那些不匹配。 请帮帮我
**更新: **
我想像 schedule.deleteJob(JobKey) 一样根据我的计划配置删除什么是作业键,或者我应该使用 schedule.unScheduler()
org.quartz.Scheduler#unscheduleJob
接受触发键作为参数。 因此,您可以删除指定的触发器,而不是作业。
public static boolean removeJob(String jobName, String jobGroup) throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
if (scheduler.checkExists(triggerKey)) {
scheduler.unscheduleJob(triggerKey); // trigger + job
}
logger.info(">>>>>>>>>>> removeJob success, triggerKey:{}", triggerKey);
return true;
}
希望有帮助。
更新:
我们实际上并不知道您的功能需求。 但是,您可以以更简洁的方式创建触发器并将其绑定到给定的作业:
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/2 8-17 * * ?"))
.forJob("myJob", "group1") // Binding the Trigger to the Job
.build();
我看到您在Trigger
中使用JobDataMap
。 这对于将参数传递给特定于触发器执行的Job
很有用。 你真的需要那个吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.