Camel Quartz在路线启动时路由不需要的作业

时间:2013-10-08 07:21:27

标签: java apache-camel quartz-scheduler

我有几条路线如下:

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

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

如果路线配置为每天17:00运行,那么如果我的路线在17:00之后开始, 石英注意到它应该在17:00运行并将尝试恢复错过的执行。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

trigger.misfireInstruction = org.quartz.SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT

编辑:根据土壤工程师的评论,上述内容应为:

<强> trigger.misfireInstruction = 2