Quartz Scheduler添加第11个Job后无法启动,无异常报错
Quartz调度第11个Job无法启动无异常问题
我使用Quartz Scheduler调度多个计算任务,设置为每日特定时分执行一次,但添加第11个Job(K)后,该Job无法启动,且无任何异常抛出。以下是实现代码:
JobDetail初始化代码
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_hp,trigger6); sch.scheduleJob(G,trigger7); sch.scheduleJob(H,trigger8); sch.scheduleJob(I,trigger9); sch.scheduleJob(J,trigger10); sch.scheduleJob(K,trigger11);
注:类名已做隐私处理
排查与解决方案
- 调整线程池大小:Quartz默认线程池线程数为10,11个任务同时触发时第11个会进入等待队列。修改
quartz.properties中的org.quartz.threadPool.threadCount参数为大于11的值(如15)。 - 校验绑定逻辑:确认第11个Job与Trigger的Identity无重复,绑定代码无变量名错误(比如原代码中F任务的变量是F_hp,需确保绑定对应正确)。
- 开启调度器日志:添加Quartz日志配置,查看内部运行日志,定位隐性错误(如Job类初始化失败、权限问题等)。
- 调整调度器启动时机:将
sch.start()移至所有scheduleJob调用之后,避免任务绑定前调度器已启动导致遗漏。 - 检查Job类实现:确认K类正确实现
Job接口的execute方法,无静态初始化错误或未捕获的内部异常。
内容的提问来源于stack exchange,提问作者LucasG
相关产品推荐
相关产品推荐

