我用:石英不恢复工作
- 春4.2.9
- PostgreSQL的
- 石英2.3.0
- 的Java 8
我有一些问题,在恢复作业集群服务器...我在集群中有2个测试服务器(1个数据库)。
调度工作很好,但是当我停止Tomcat(1),其中作业正在运行,另一台服务器(2)作业未恢复上...
如果我重新启动Tomcat#2,然后调度开始工作,如果我启动tomcat#1,当tomcat#2工作时,石英将工作转移到tomcat#1。工作很不错,但
第一个问题:我需要当Tomcat#1停止Tomcat的#2将无重新开始工作......
第二个问题:什么jdbcjobstore更好的给我吗? JobStoreTX or JobStoreCMT?在工作集群中,我有4个服务器在春季4.2.9
对不起,我的英语和非常感谢你的答案!
属性石英,@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);
我第一次使用JobStoreTX和问题是一样的,我试图使用JobStoreCMT,但它没有帮助... –
你使用默认的“org.quartz.jobStore.clusterCheckinInterval”?这决定了实例检查的频率。如果此值在设置中较大,则服务器2可能尚未检测到服务器1已关闭。 – Srinivas
我试过你的解决方案,但没有帮助 –