2015-01-22 8 views
0

메시지가있는 간단한 작업 클래스와 5 초 동안 실행되는 setter가 있습니다. 이 작업 클래스는 @DisallowConcurrentExecution으로 주석 처리되므로 한 번에 여러 번 실행할 수 없습니다.석영 스케줄러가 일관성없이 동작합니다

내 주요 방법으로는이 메시지를 매번 다른 메시지와 함께 6 회 실행 해 봅니다.

 SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); 
     Scheduler sched = schedFact.getScheduler(); 
     sched.start(); 

     String name = "LongJob2X"; 
     JobDetail job = newJob(LongJob.class) 
       .withIdentity(name, "group1") 
       .storeDurably() 
       .requestRecovery(true) 
       .build(); 

     sched.addJob(job, true); 

     JobDataMap data = new JobDataMap(); 
     data.put("message", "Prvy"); 

     JobDataMap data2 = new JobDataMap(); 
     data2.put("message", "Druhy"); 

     JobDataMap data3= new JobDataMap(); 
     data.put("message", "3"); 

     JobDataMap data4 = new JobDataMap(); 
     data.put("message", "stvrty"); 

     JobDataMap data5 = new JobDataMap(); 
     data.put("message", "5"); 

     JobDataMap data6 = new JobDataMap(); 
     data.put("message", "xsiesty6"); 

     sched.triggerJob(job.getKey(), data); 
     sched.triggerJob(job.getKey(), data2); 
     sched.triggerJob(job.getKey(), data3); 
     sched.triggerJob(job.getKey(), data4); 
     sched.triggerJob(job.getKey(), data5); 
     sched.triggerJob(job.getKey(), data6); 

출력이 혼란 스럽습니다.

Thu Jan 22 23:32:09 CET 2015 - 0: xsiesty6 
Thu Jan 22 23:32:10 CET 2015 - 1: xsiesty6 
Thu Jan 22 23:32:11 CET 2015 - 2: xsiesty6 
Thu Jan 22 23:32:12 CET 2015 - 3: xsiesty6 
Thu Jan 22 23:32:13 CET 2015 - 4: xsiesty6 
Thu Jan 22 23:32:14 CET 2015 - 0: Default 
Thu Jan 22 23:32:15 CET 2015 - 1: Default 
Thu Jan 22 23:32:16 CET 2015 - 2: Default 
Thu Jan 22 23:32:17 CET 2015 - 3: Default 
Thu Jan 22 23:32:18 CET 2015 - 4: Default 
Thu Jan 22 23:32:19 CET 2015 - 0: Default 
Thu Jan 22 23:32:20 CET 2015 - 1: Default 
Thu Jan 22 23:32:21 CET 2015 - 2: Default 
Thu Jan 22 23:32:22 CET 2015 - 3: Default 
Thu Jan 22 23:32:23 CET 2015 - 4: Default 
Thu Jan 22 23:32:24 CET 2015 - 0: Druhy 
Thu Jan 22 23:32:25 CET 2015 - 1: Druhy 
Thu Jan 22 23:32:26 CET 2015 - 2: Druhy 
Thu Jan 22 23:32:27 CET 2015 - 3: Druhy 
Thu Jan 22 23:32:28 CET 2015 - 4: Druhy 
Thu Jan 22 23:32:30 CET 2015 - 0: Default 
Thu Jan 22 23:32:31 CET 2015 - 1: Default 
Thu Jan 22 23:32:32 CET 2015 - 2: Default 
Thu Jan 22 23:32:33 CET 2015 - 3: Default 
Thu Jan 22 23:32:34 CET 2015 - 4: Default 
Thu Jan 22 23:32:35 CET 2015 - 0: Default 
Thu Jan 22 23:32:36 CET 2015 - 1: Default 
Thu Jan 22 23:32:37 CET 2015 - 2: Default 
Thu Jan 22 23:32:38 CET 2015 - 3: Default 
Thu Jan 22 23:32:39 CET 2015 - 4: Default 

내가 해봤 모든 실행 두 번째 및 설정 마지막 메시지 만했다 : 코드는 각 트리거에 대해 동일하지만, 때로는 메시지에 대한 세터는 따라서이 출력, 호출되지 않습니다. 한 번에 저장할 수있는 JobDataMap 수에 제한이 있습니까? 아니면 내가 잘못하고있는거야? 감사. 나는이 같은 JDBC JobStore을 사용하고 있습니다 :

마지막 주 그것은 쉽게

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX 
org.quartz.jobStore.tablePrefix = QRTZ_ 
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate 

답변

1

, 당신은 대신 data.put(...), data2.put(...), data3.put(...)있는의, 같은 data 거의 모든 시간에 메시지를 가하고 있습니다 ..

JobDataMap data = new JobDataMap(); 
    data.put("message", "Prvy"); //Correct 

    JobDataMap data2 = new JobDataMap(); 
    data2.put("message", "Druhy");// Correct 

    JobDataMap data3= new JobDataMap(); 
    data.put("message", "3");// Here not data3 but data 

    JobDataMap data4 = new JobDataMap(); 
    data.put("message", "stvrty");// Here not data4 but data 

    JobDataMap data5 = new JobDataMap(); 
    data.put("message", "5"); // Here not data5 but data 

    JobDataMap data6 = new JobDataMap(); 
    data.put("message", "xsiesty6"); // Here not data6 but data 
+0

네가 맞아, 이런 일이 생길 때가 싫어. :) 나는 10 분 동안 코드를 살펴 봤는데, 지금 프로그래밍하기에는 너무 늦었다 고 생각한다. :) – Samuel