2016-07-20 5 views
1

私が持っているschedulerStatefulJobsを連続して実行する方法(同時に実行しないでください)

   SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory("quartz.properties"); 
       sched = schedFact.getScheduler(); 
       sched.start(); 
       JobDetail jobDetail; 
       CronTrigger trigger; 
       for (ReportDetails report : reports) { 
        jobDetail = new JobDetail(report.getName() + _REPORT, GRP, ReportJob.class); 
        jobDetail.getJobDataMap().put(ReportJob.DATA_REPORT, report); 
        sched.addJob(jobDetail, true); 
        if (report.getCronExp() != null && report.getCronExp().length() > 0) { 
         trigger = new CronTrigger(report.getName() + _TRIGGER, GRP); 
         trigger.setCronExpression(report.getCronExp()); 
         trigger.setJobGroup(GRP); 
         trigger.setJobName(report.getName() + _REPORT); 
         sched.scheduleJob(trigger); 
        } 
       } 

をそして、私のjobインスタンスがあります:

public class ReportJob implements StatefulJob { 
    private static final Logger logger = Logger.getLogger(ReportJob.class); 
    public void execute(JobExecutionContext context) throws JobExecutionException { 
     ReportDetails report = (ReportDetails) context.getJobDetail().getJobDataMap().get(DATA_REPORT); 
     report.getLogger().info("job for report started"); 
     ... 
     report.getLogger().info("Job for report ended"); 
    } 
} 

事がReportJobのは確かStatefulJobを実装してもジョブが同時に実行することです。

QuartzScheduler_Worker-1 | job for report started

QuartzScheduler_Worker-2 | job for report started

QuartzScheduler_Worker-2 | job for report ended

QuartzScheduler_Worker-1 | job for report ended

私はそれらを1つずつ連続して実行します。この問題を解決するには?

答えて

0

エラー:StatefulJobは、同じキーを持つジョブの複数のインスタンスが同時に実行されないようにしました。私は別の鍵で仕事を作りました。

関連する問題