如何确定 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 
    )