1

質問は、バッチ ジョブの自動回復戦略に関するものです。いくつかのジョブが実行されていたときに (ステータスが「STARTED」で終了時刻が null の場合)、不明な理由でサーバーがシャットダウンされたと言う。サーバーを再起動したときに、これらすべてのジョブを回復するにはどうすればよいでしょうか。

私の状況では、リクエストを受信して​​ DB キューに保存する独自のジョブ ランチャーを作成しました。次に、独自のジョブ スケジューラを実行して、DB からの要求をポーリングし、ジョブを実行します。これらのジョブのステータスを「STARTED」から「STARTING」に変更して、スケジューラが再び取得できるようにするために、現在の試行には次のものが含まれています。

  1. Spring バッチは「STARTED」ジョブを再起動できず、ジョブが再起動可能であるため、Spring バッチは同じジョブ インスタンスで新しいジョブ実行を作成します。したがって、ジョブを再開できる場合は、元のジョブ ID を変更する必要があります。しかし、ジョブ演算子を使用して「STARTED」ステータスのジョブを停止し、再度再開しようとしましたが、失敗しました。なぜこれが機能しないのですか?

    jobOperator.stop(ジョブID); jobOperator.restart(jobId);

  2. また、ジョブ リポジトリを使用して、ジョブの実行ステータスを「STARTED」から「STARTING」に更新することもできませんでした。

    jobExecution.setStatus(BatchStatus.STARTED); jobRepository.update(ジョブ実行);

これを達成するための考えをいただければ幸いです。

4

2 に答える 2

1

FAILEDジョブを再開するには、ステータスを に修正する必要があります。

于 2014-08-26T12:32:52.627 に答える