3

次のようなルートがいくつかあります。

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

これらのルートは、管理コンソールから開始および停止できます。私が抱えている問題は次のとおりです。

ルートが毎日 17:00 に実行されるように構成されている場合、現在、私のルートが 17:00 以降に開始された場合、クォーツは 17:00 に実行されるべきであることに気づき、失敗した実行を回復しようとします。

私はそれが起こりたくない、私が望むもの:

  • 1 日目の 17:00 より前にルートを開始すると、ジョブは 1 日目の 17:00 にトリガーされます
  • 17:00 以降の day1 にルートを開始すると、ジョブは day2 の 17:00 にトリガーされるはずです

ステートフルな仕事を選んだことと関係がありますか? 同じジョブの同時実行を避けるために、ステートフル ジョブを選択しました。

4

1 に答える 1

1

Claus の提案に基づいて、おそらく以下が Quartz ジョブのパラメーターとして機能します ( org.quartz.SimpleTriggerを使用していると仮定します):

trigger.misfireInstruction=org.quartz.SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT

編集:soilworkerのコメントに基づいて、上記は次のようになります。

trigger.misfireInstruction=2

于 2014-04-29T12:25:21.050 に答える