嗨,我目前正在使用 Quartz Scheduler 来安排多个任务来执行计算。它们计划在每天的特定时间和分钟执行一次。但是自从我添加了第 11 个作业后,quart 就没有启动作业。我没有异常错误。
这是我的实现:
JobDetail A = JobBuilder.newJob(A.class)
.withIdentity("job1")
.build();
JobDetail B = JobBuilder.newJob(B.class)
.withIdentity("job2")
.build();
JobDetail C = JobBuilder.newJob(C.class)
.withIdentity("job3")
.build();
JobDetail D = JobBuilder.newJob(D.class)
.withIdentity("job4")
.build();
JobDetail E = JobBuilder.newJob(E.class)
.withIdentity("job5")
.build();
JobDetail F_hp = JobBuilder.newJob(F.class)
.withIdentity("job6")
.build();
JobDetail G = JobBuilder.newJob(G.class)
.withIdentity("job7")
.build();
JobDetail H = JobBuilder.newJob(H.class)
.withIdentity("job8")
.build();
JobDetail I = JobBuilder.newJob(I.class)
.withIdentity("job9")
.build();
JobDetail J = JobBuilder.newJob(J.class)
.withIdentity("job10")
.build();
JobDetail K = JobBuilder.newJob(K.class)
.withIdentity("job11")
.build();
触发器初始化:
trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger2 = TriggerBuilder.newTrigger()
.withIdentity("trigger2", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger3 = TriggerBuilder.newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger4 = TriggerBuilder.newTrigger()
.withIdentity("trigger4", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger5 = TriggerBuilder.newTrigger()
.withIdentity("trigger5", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger6 = TriggerBuilder.newTrigger()
.withIdentity("trigger6", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger7 = TriggerBuilder.newTrigger()
.withIdentity("trigger7", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger8 = TriggerBuilder.newTrigger()
.withIdentity("trigger8", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger9 = TriggerBuilder.newTrigger()
.withIdentity("trigger9", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger10 = TriggerBuilder.newTrigger()
.withIdentity("trigger10", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
trigger11 = TriggerBuilder.newTrigger()
.withIdentity("trigger11", "group1")
.withSchedule(dailyAtHourAndMinute(hour, minute))
.build();
SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler sch = schFactory.getScheduler();
sch.start();
sch.scheduleJob(A, trigger);
sch.scheduleJob(B, trigger2);
sch.scheduleJob(C, trigger3);
sch.scheduleJob(D,trigger4);
sch.scheduleJob(E,trigger5);
sch.scheduleJob(F,trigger6);
sch.scheduleJob(G,trigger7);
sch.scheduleJob(H,trigger8);
sch.scheduleJob(I,trigger9);
sch.scheduleJob(J,trigger10);
sch.scheduleJob(K,trigger11);
注意:为了保护隐私,班级名称被屏蔽了
Quartz默认的线程池是10个,所以最多只能运行10个作业。
所以改变quartz.properties中的线程池是这样的:
org.quartz.scheduler.instanceName=SampleJobScheduler
org.quartz.scheduler.rmi.export=false
org.quartz.scheduler.rmi.proxy=false
org.quartz.scheduler.wrapJobExecutionInUserTransaction=false
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=20
org.quartz.threadPool.threadPriority=5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
org.quartz.threadPool.threadCount
的价值一定要设置的比你的jobs