You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:42:54