同じジョブを実行しているトリガー間で再試行カウント データを保持したいと考えています。
DirtyHashMap である JobExectionContext.JobDetails.JobDataMap に格納してみました。保存されますが、2回目に同じジョブが異なるトリガーで実行され、そのトリガーが同じキーの値を更新した場合、それは保持されません。そのため、3 回目にアクセスすると、キー値は最初のものと同じままです。
注: Job クラスで @PersistJobDataAfterExecution を使用して、テラコッタではなく通常どおり実行すると機能します
擬似コードは次のとおりです。
Cron トリガー 1: CronTrigger.executionComplete() で > 失敗した場合 > retryCount をインクリメントし、jobcontext JobDataMap に設定 > 新しい SimpleTrigger で同じジョブを再スケジュール (コンテキスト 0 での再試行回数、新しい値セット 1)
単純なトリガー 1: SimpleTrigger.executionComplete() で > 失敗した場合 > retryCount をインクリメントし、jobcontext JobDataMap に設定 > 新しい SimpleTrigger で同じジョブを再スケジュール (コンテキスト 1 での再試行回数、新しい値セット 2)
単純なトリガー 2: SimpleTrigger.executionComplete() で > 失敗した場合 > retryCount をインクリメントし、jobcontext JobDataMap に設定 > 新しい SimpleTrigger で同じジョブを再スケジュール
(コンテキスト内の再試行回数は 1 のままで、新しい値は 2 に設定されます)
これが問題の場所です。最初に設定した後、再試行回数が増加しません。繰り返しますが、これはテラコッタ ジョブストアで実行した場合にのみ発生します。単一のインスタンスで完全に持続します。
何か案が?