如何确定 Quartz Job 是否暂停
How to find out if the Quartz Job is paused
在我的 Spring 引导应用程序中,我使用 Quartz org.quartz.Scheduler
来安排作业:
final JobDetail job = JobBuilder.newJob().ofType(ReportSendingJob.class)
.storeDurably()
.withIdentity("myJob")
.build();
final CronTrigger trigger = TriggerBuilder.newTrigger().forJob(job)
.withIdentity(scheduleName)
.withSchedule(CronScheduleBuilder.cronSchedule(schedule.getCronExpression()).withMisfireHandlingInstructionDoNothing())
.build();
scheduler.scheduleJob(job, trigger);
然后我暂停了它:
scheduler.pauseJob(new JobKey("myJob"));
如何获取此作业的状态以查看它是否已暂停?
pauseJob
方法的文档说
Pause the JobDetail with the given key - by pausing all of its current Triggers.
因此您可以通过检查所有触发器是否已暂停来检查作业是否已暂停:
List<Trigger> triggers = scheduler.getTriggersOfJob(JobKey.jobKey("myJob"))
boolean paused = triggers
.stream()
.allMatch( trigger ->
scheduler.getTriggerState(trigger.key) == PAUSED
)
在我的 Spring 引导应用程序中,我使用 Quartz org.quartz.Scheduler
来安排作业:
final JobDetail job = JobBuilder.newJob().ofType(ReportSendingJob.class)
.storeDurably()
.withIdentity("myJob")
.build();
final CronTrigger trigger = TriggerBuilder.newTrigger().forJob(job)
.withIdentity(scheduleName)
.withSchedule(CronScheduleBuilder.cronSchedule(schedule.getCronExpression()).withMisfireHandlingInstructionDoNothing())
.build();
scheduler.scheduleJob(job, trigger);
然后我暂停了它:
scheduler.pauseJob(new JobKey("myJob"));
如何获取此作业的状态以查看它是否已暂停?
pauseJob
方法的文档说
Pause the JobDetail with the given key - by pausing all of its current Triggers.
因此您可以通过检查所有触发器是否已暂停来检查作业是否已暂停:
List<Trigger> triggers = scheduler.getTriggersOfJob(JobKey.jobKey("myJob"))
boolean paused = triggers
.stream()
.allMatch( trigger ->
scheduler.getTriggerState(trigger.key) == PAUSED
)