问题描述
在Spring Boot应用程序中,我使用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
方法的文档说
使用给定的键暂停JobDetail-通过暂停其所有当前触发器。
因此,您可以通过检查所有触发器是否都暂停来检查作业是否暂停:
List<Trigger> triggers = scheduler.getTriggersOfJob(JobKey.jobKey("myJob"))
boolean paused = triggers
.stream()
.allMatch( trigger ->
scheduler.getTriggerState(trigger.key) == PAUSED
)