quartz schedule中pauseJob和pauseTrigger之间的区别?

MiD*_*huN 3 java quartz-scheduler

quartz quartz中的pauseJob()和pauseTrigger()有什么区别?如何选择其中一个使用?现在我想暂停/干预一个特定的工作我该怎么办

我的调度程序代码如下

JobDetail job = new JobDetail();
            job.setName("pollerjob"+pollerId);
            job.setJobClass(Pollersheduller.class);
            job.getJobDataMap().put("socialMediaObj", socialMediaObj);
            job.getJobDataMap().put("queue", queue);


            //configure the scheduler time
            SimpleTrigger trigger = new SimpleTrigger();
            trigger.setName("pollerSocial"+pollerId);
            trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
            trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
            trigger.setRepeatInterval(Long.parseLong(intervel));


            //schedule it
            Scheduler scheduler = null;
            try {
                scheduler = new StdSchedulerFactory().getScheduler();
                scheduler.start();
                scheduler.scheduleJob(job, trigger);
            } catch (SchedulerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
Run Code Online (Sandbox Code Playgroud)

Jan*_*vec 8

As you have probably noticed, in Quartz a single job can be associated with multiple triggers. And if you look into Quartz sources, you will see that the pauseJob method simply retrieves all triggers associated with the specified job and pauses them, whereas the pauseTrigger method pauses only a particular trigger. So that is the main difference.

请注意,在Quartz中暂停作业不会暂停当前正在运行的正在运行的作业,它只会阻止作业在将来运行!

如果要中断正在运行的作业,则可以使用作业必须实现的org.quartz.Interruptable接口中定义的interruptJob方法.如果您的作业实现了此接口,则完全取决于您实现中断逻辑.例如,您可以在调用interruptJob方法时设置某种标志,然后您需要在作业的execute方法中检查此标志的值.