3

我有几条看起来像的路线:

from("quartz://" + getJobId() + "?cron=" + cronExpression + "&stateful=true")
        .routeId(getJobId())
        .autoStartup(false)
        .to(getRouteTo());

可以从管理控制台启动和停止这些路由。我遇到的问题如下:

如果路由配置为每天 17:00 运行,目前如果我的路由在 17:00 之后开始,quartz 会注意到它应该在 17:00 运行,并将尝试恢复错过的执行。

我不希望这种情况发生,我想要的是:

  • 我在第 1 天 17:00 之前开始我的路线,工作将在第 1 天 17:00 触发
  • 我在第 1 天 17:00 后开始我的路线,工作应该在第 2 天 17:00 触发

这与我选择了一份有状态的工作有关吗?我选择了一个有状态的作业来避免同时执行同一个作业。

4

1 回答 1

1

根据克劳斯的建议,也许以下内容可以作为石英作业的参数(假设您使用的是org.quartz.SimpleTrigger):

trigger.misfireInstruction=org.quartz.SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT

编辑:根据土壤工人的评论,以上内容应为:

trigger.misfireInstruction=2

于 2014-04-29T12:25:21.050 回答