J'utilise:Quartz DonT récupérer Job
- Spring 4.2.9
- PostgreSQL
- Quartz 2.3.0
- Java 8
J'ai quelques problèmes avec l'emploi de reprise serveurs de cluster ... J'ai 2 serveurs de test en cluster (1 DB).
Scheduler beau travail, mais quand je me arrête tomcat (1) où l'emploi est en cours d'exécution d'emploi, sur un autre serveur (2) récupère pas ...
Si je redémarre tomcat # 2, puis ordonnanceur travail de démarrage, si je commence tomcat # 1, quand tomcat # 2 fonctionne, le quartz prend le travail sur tomcat # 1. Travailler très bon, mais
Première question: Je dois quand tomcat # 1 est arrêté, tomcat # 2 sera sans emploi commencer ... redémarrer
Deuxième question: Et jdbcjobstore mieux pour moi? JobStoreTX ou JobStoreCMT? Dans le groupe de travail, j'ai 4 serveur sur le ressort 4.2.9
Désolé pour mon anglais et merci beaucoup pour vous des réponses!
Propriétés Quartz, @Bean dans mon projet
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");
Mon emploi et Trigger
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);
Dans la première fois j'ai utilisé JobStoreTX et le problème était le même, j'ai essayé d'utiliser JobStoreCMT, mais ça n'aide pas ... –
utilisez-vous la valeur par défaut pour "org.quartz.jobStore.clusterCheckinInterval"? Cela détermine la fréquence d'archivage des instances. Si cette valeur est importante dans votre configuration, le serveur 2 peut ne pas encore détecter le serveur 1. – Srinivas
J'ai essayé votre solution, mais n'a pas aidé –