【问题标题】:nextFireTime and start time aren't alignednextFireTime 和开始时间未对齐
【发布时间】:2013-02-27 21:08:43
【问题描述】:

我正在尝试创建一个每天上午 10:00 运行的石英作业,但首先从上午 9:30 开始。 我正在使用开始时间和 cron 表达式如下:

CronTrigger newTrigger = newTrigger().withIdentity(jobName + i, jobName)
   .startAt(startTime).endAt(endTime).withSchedule(cronSchedule(cronExpression)
   .withMisfireHandlingInstructionFireAndProceed().inTimeZone(timeZone)).build();

cron 表达式为:

0 0 10 * * ?

但作业在上午 10:00 开始运行(并忽略开始时间)。如果我正在查看数据库中的qrtz_triggers 表,我看到start_time 确实是9:30,但next_fire_time 是10:00。

我在这里做错了什么?

【问题讨论】:

    标签: java quartz-scheduler cronexpression crontrigger


    【解决方案1】:

    开始和结束时间是 cron 计划处于活动状态的窗口。它们没有指定触发触发器的第一次和最后一次。

    例如,开始时间为上午 9:30,结束时间为下午 6:30 的每小时触发的计划将在此期间的整点触发。

    在您的情况下,这无关紧要,因为您的 cron 计划是每天上午 10 点一次,这属于开始和结束时间窗口。

    如果您想在每天上午 9 点 30 分和上午 10 点触发作业,那么最简单的方法是创建两个都调用相同作业的 cron 触发器。

    【讨论】:

    • 嗨,你知道为什么启动服务器时这个 xml 触发器工作吗? <trigger> <cron> <name>SimpleTrigger</name> <group>SimpleTriggerGroup</group> <job-name>SimpleJob</job-name> <job-group>SimpleJobGroup</job-group> <start-time>2015-09-26T17:00:03Z</start-time> <cron-expression>*/5 * * * * ?</cron-expression> </cron> </trigger>PS。开始时间是过去的时间。
    • @zeljic 我不知道那个答案。将其作为新问题发布。
    • 我想我知道为什么了,这可能是因为默认设置(MISFIRE_INSTRUCTION_SMART_POLICY)失火。
    猜你喜欢
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多