java—如何确定quartz作业是否暂停

2sbarzqh  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(938)

在我的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"));

如何获取此作业的状态以查看它是否已暂停?

krcsximq

krcsximq1#

文件 pauseJob 方法说
使用给定的键暂停jobdetail—通过暂停其所有当前触发器。
因此,您可以通过检查所有触发器是否已暂停来检查作业是否已暂停:

List<Trigger> triggers = scheduler.getTriggersOfJob(JobKey.jobKey("myJob"))

boolean paused = triggers
    .stream()
    .allMatch( trigger -> 
        scheduler.getTriggerState(trigger.key) == PAUSED 
    )

相关问题