我用:
我在群集服务器中的恢复作业有些问题...我在群集中有2个测试服务器(1个DB)。
调度程序工作正常,但是当我停止运行Job的tomcat(1)时,在另一台服务器上(2)作业无法恢复...
如果我重新启动tomcat#2,那么调度程序启动工作,如果我启动tomcat#1,当tomcat#2工作时,quartz会将工作带到tomcat#1。工作得很好,但是
第一个问题:我需要当tomcat#1停止时,tomcat#2将启动Job而不重启...
第二个问题: jdbcjobstore 更适合我? JobStoreTX 或 JobStoreCMT ?在工作集群中,我在Spring 4.2.9上有4台服务器
对不起我的英文,非常感谢你的答案!
属性Quartz,我项目中的@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 :(得分:0)
我发现问题,它是双org.quartz.scheduler.instanceId,第一次是AUTO,第二次是IS_CLUSTERED。 谢谢大家!