【问题标题】:Quartz scheduler does not trigger at given timeQuartz 调度程序不会在给定时间触发
【发布时间】:2011-07-19 22:15:59
【问题描述】:

我有一个程序可以将工作重新安排一小时。有时会在给定时间触发,有时会错过触发时间。

日志中没有异常或错误。如何使触发器在给定时间工作?

欢迎任何帮助。我的代码如下:

StdSchedulerFactory sf = new StdSchedulerFactory();
Scheduler clusteredScheduler = sf.getScheduler();
Trigger tg = clusteredScheduler.getTrigger("myjob", "group1");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR, schedulerConstants.HOUR);
Trigger tg = scheduler.getTrigger(
    schedulerConstants.START_PREPARE_SEARCH_CONSUMER_JOB_NAME,
    schedulerConstants.JOB_GROUP_NAME);
((CronTrigger) tg).setCronExpression(
    "0 " + cal.get(Calendar.MINUTE) + " " + cal.get(Calendar.HOUR_OF_DAY) + " * * ?");
clusteredScheduler.rescheduleJob("myjob", "group1", tg);

这是我的完整代码。有时调度程序会卡住并保持无响应。日志中没有错误或异常。我尝试增加线程池中的线程数,问题依旧。

【问题讨论】:

    标签: java quartz-scheduler


    【解决方案1】:

    您的代码不足以帮助识别您的问题。您只显示更新现有触发器 (scheduler.getTrigger(...)) 的代码部分。更新触发器后,您可能忘记重新安排作业:Scheduler#rescheduleJob。此外,在对多个作业重复使用同一个触发器时要小心。

    您的触发器是每天,在特定时间(更具体地说 - 当前所用时间,很可能增加一小时)。您是否尝试过以更频繁的触发器运行系统,并查看会发生什么(除非您没有更好的方法来自动化此测试)?

    以防万一 - 如果您正在开发中尝试时移。机器查看它是否以指定的时间间隔运行作业,它实际上可能无法按您预期的那样工作。

    【讨论】:

    • StdSchedulerFactory sf = new StdSchedulerFactory();调度程序 clusteredScheduler = sf.getScheduler();触发器 tg = clusteredScheduler.getTrigger("myjob","group1");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多