【问题标题】:Quartz prevent jobs overlap石英防止工作重叠
【发布时间】:2015-05-09 04:12:05
【问题描述】:

我是 Quartz 2.1 的新手,对此有疑问。我有一份工作如下

@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class HelloJob implements Job {

    public void execute(JobExecutionContext arg0) throws JobExecutionException {

我创建了 2 个工作,如下所示

JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("Job1").build();
JobDetail jobDetail2 = JobBuilder.newJob(HelloJob.class).withIdentity("Job2").storeDurably().build();
Trigger trigger = TriggerBuilder.newTrigger().forJob(jobDetail).withSchedule(
                        SimpleScheduleBuilder.simpleSchedule()
                                .withIntervalInSeconds(5).repeatForever()).build();
Trigger trigger2 = TriggerBuilder.newTrigger().forJob(jobDetail2).withSchedule(
                        SimpleScheduleBuilder.simpleSchedule()
                                .withIntervalInSeconds(10).repeatForever()).build();
        SchedulerFactory factory = new StdSchedulerFactory("quartz.properties");
        Scheduler scheduler = factory.getScheduler();
        scheduler.start();
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.scheduleJob(jobDetail2, trigger2);

如您所见,job1 每 5 秒执行一次,job2 每 10 秒执行一次。我想要的是,如果 job1 需要超过 10 秒才能完成,job2 将执行直到 job1 完成。但实际上,job2 仍然在 job1 未完成时执行。你能帮帮我吗?

P/s: this is the quartz.properties:
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

【问题讨论】:

    标签: java quartz-scheduler


    【解决方案1】:
    1. 如果您使用同一个作业,则只需要一个 JobDetail 实例(而不是两个)。
    2. 为您调用 storeDurably JobDetail。
    3. 为触发器和触发器2设置相同的jobDetail
    4. 如下安排工作:

      scheduler.start();
      scheduler.addJob(jobDetail, true);
      scheduler.scheduleJob(trigger);
      scheduler.scheduleJob(trigger2);
      

    你的代码的其他部分很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2023-01-27
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多