2017-09-25 7 views
0

내가 사용을 복구 해달라고 클러스터 서버 ... 클러스터에 2 개의 테스트 서버가 있습니다 (1 DB).석영은 작업

스케줄러 잘 작동,하지만 난 바람둥이 # 2 다시 시작하면 바람둥이 (1) 작업이 ... (2) 작업이 복구되지 않은 다른 서버에서

를 실행중인 경우 중지 할 때, 다음 스케줄러 시작 작업, tomcat # 1을 시작하면 tomcat # 2가 작동 할 때 quartz가 tomcat # 1에 작업을 시작합니다. 아주 좋은 작동하지만

첫 번째 질문 : 그리고 나를 위해 무엇을 jdbcjobstore 더 나은 : 나는 ... 바람둥이 # 1이 정지 될 때, 바람둥이 # 2를 다시 시작하지 않고 작업을 시작합니다

두 번째 질문을해야합니까? JobStoreTX 또는 JobStoreCMT? 작업 클러스터에서 저는 스프링에 4 서버가 있습니다. 4.230

죄송합니다. 영어로 죄송하며 답변 해 주셔서 감사합니다.

속성 석영, @Bean 내 프로젝트에

Properties prop = new Properties(); 
prop.put("org.quartz.threadPool.class","org.quartz.simpl.SimpleThreadPool"); 
prop.put("org.quartz.threadPool.threadCount", "4"); 
prop.put("org.quartz.jobStore.misfireThreshold", "20000"); 
prop.put("quartz.scheduler.instanceName", "ServerScheduler"); 
prop.put("org.quartz.scheduler.instanceId", "AUTO"); 
prop.put("org.quartz.scheduler.skipUpdateCheck", "true"); 
prop.put("org.quartz.scheduler.instanceId", "IS_CLUSTERED"); 
prop.put("org.quartz.scheduler.jobFactory.class","org.quartz.simpl.SimpleJobFactory"); 
prop.put("org.quartz.jobStore.class","org.quartz.impl.jdbcjobstore.JobStoreCMT"); 
prop.put("org.quartz.jobStore.driverDelegateClass","org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"); 
prop.put("org.quartz.jobStore.dataSource", "myDS"); 
prop.put("org.quartz.jobStore.nonManagedTXDataSource", "myDS"); 
prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); 
prop.put("org.quartz.jobStore.isClustered", "true"); 
prop.put("org.quartz.dataSource.myDS.driver", "org.postgresql.Driver"); 
prop.put("org.quartz.dataSource.myDS.URL", url); 
prop.put("org.quartz.dataSource.myDS.user", user); 
prop.put("org.quartz.dataSource.myDS.password", password); 
prop.put("org.quartz.dataSource.myDS.maxConnections", "4"); 

내 작업과 트리거

JobDetail job = newJob(QuartzStockTask.class) 
       .withIdentity("Job " + "1", "Job group " + "11") 
       .requestRecovery(true) 
       .build(); 

Trigger sTrigger1 = newTrigger() 
       .withIdentity("Trig " + "1", "Trig group " + "11") 
       .startNow() 
       .withSchedule(simpleSchedule() 
         .withIntervalInSeconds(10) 
         .repeatForever()) 
       .build(); 

scheduler.scheduleJob(job, sTrigger1); 
+0

처음으로 JobStoreTX를 사용했는데 문제가 같았습니다. JobStoreCMT를 사용해 보았지만 도움이되지 않았습니다 ... –

+0

"org.quartz.jobStore.clusterCheckinInterval"에 기본값을 사용하고 있습니까? 인스턴스가 체크인하는 빈도를 결정합니다.이 값이 설정에서 큰 경우 서버 2는 서버 1이 다운 된 것을 아직 감지하지 못할 수 있습니다. – Srinivas

+0

당신의 해결책을 시도했지만 도움이되지 않았습니다 –

답변

0

나는, 그것은 처음에 AUTO 더블 org.quartz.scheduler.instanceId 문제가되었다 발견 두 번째 IS_CLUSTERED. 감사합니다.

+0

그러나 2 질문 체류가 열려 있습니다! JobStoreTX 또는 JobStoreCMT? –

+0

javadocs에서 컨테이너의 JobStoreCMT [http://www.quartz-scheduler.org/api/2.1.7/org/quartz/impl/jdbcjobstore/JobStoreCMT.html]의이 부분을 실행하고 있으므로이 항목을 선호해야합니다. – Srinivas