【问题标题】:Running two jobs with Quartz in Java在 Java 中使用 Quartz 运行两个作业
【发布时间】:2010-07-05 21:58:06
【问题描述】:

我的 Quartz 编码如下,第一个作业运行完美:

JobDetail jd = null;
CronTrigger ct = null;   
jd = new JobDetail("Job1", "Group1",  Job1.class);
ct = new CronTrigger("cronTrigger1","Group1","0/5 * * * * ?");
scheduler.scheduleJob(jd, ct);
jd = new JobDetail("Job2", "Group2",  Job2.class);
ct = new CronTrigger("cronTrigger2","Group2","0/20 * * * * ?");
scheduler.scheduleJob(jd, ct);

但我发现与 Job1 完全不同的 Job2 不会执行。

调度程序使用 Java 中的侦听器启动。我也尝试过使用 scheduler.addJob(jd, true);但没有任何改变。我在 Windows 7 上通过 JVM 运行 Java。

【问题讨论】:

    标签: java quartz-scheduler job-scheduling


    【解决方案1】:

    你怎么知道作业没有运行?如果将Job1.class 替换为Job2.class,它仍然会失败吗?当您交换将它们添加到调度程序的顺序时,还是只留下Job2?或者,如果您剥离 Job2 只将消息打印到控制台?

    我怀疑Job2 执行会因异常而死。

    【讨论】:

    • 我尝试过更改作业的顺序,并在两者中都尝试了许多调试消息。但只有作业 1 运行。
    • 所以Job2里面肯定有bug。在 try { ... } catch(Throwable t) { t.printStackTrace(); 中将所有内容包装在 execute() 中} 看看会发生什么。
    • 我的逻辑不好。过失!现在整理 cron 计时,以便一个作业在一个小时内运行,另一个在半小时内运行。
    • "30 * * * * ?" (1:30, 2:30, 3:30), "0 * * * * ?" (1:00, 2:00, 3:00), "*/30 * * * * ?" (1:00, 1:30, 2:00, 2:30), "15,45 * * * * ?" (1:15, 1:45, 2:15)
    • 如果 "30 * * * * ?"每小时运行一次工作,“0 * * * * ?”按时运行?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多