バッチタスクはエンドユーザーによってトリガーされたため、アプリケーションの起動時にはすべてのバッチジョブを実行しません(spring.batch.job.enabled=false
)。アプリケーションは、アプリケーションの再起動またはまたは例外割り込みによって引き起こされ、中断バッチジョブを続けることができたのスプリングバッチを開始しアプリケーションの起動後に中断されたバッチジョブを続行する方法
しかし、私はこの下のような状況に対処するための解決策があると期待し
、。
バッチタスクはエンドユーザーによってトリガーされたため、アプリケーションの起動時にはすべてのバッチジョブを実行しません(spring.batch.job.enabled=false
)。アプリケーションは、アプリケーションの再起動またはまたは例外割り込みによって引き起こされ、中断バッチジョブを続けることができたのスプリングバッチを開始しアプリケーションの起動後に中断されたバッチジョブを続行する方法
しかし、私はこの下のような状況に対処するための解決策があると期待し
、。
Springバッチでの失敗/中断ジョブの再開は、同じジョブパラメータで同じジョブを送信することによって達成されます。
したがって、あなたがいない完了したジョブの実行持つすべてのジョブ・インスタンスを見つけ、BATCH_JOB_INSTANCEとBATCH_JOB_EXECUTIONテーブルに参加することで失敗したジョブ(ジョブのメタデータを格納するDBを使用していると仮定)
私はJobOperatorなどから同様の情報を取得する簡単な方法があると思います。 –
あなたが正しいと思うかもしれません。 JobOperatorを使用すると、停止したジョブを再開できます。問題は、停止した時点(基本的には再開)からジョブを再開させるか、新規に提出しプロセスを最初から処理するかどうかです。 – Kaps
なぜそれを試してみませんか? :)同じジョブパラメータで送信している場合は、通常は失敗した場所から開始します。 –
私の既存の質問[こちら](https://stackoverflow.com/questions/40990935/resume-a-spring-batch-job-from-last-processed-point)をご覧ください。私はあなたの仕事を再開するために問題のコードを入れました。そのコードの欠点だけです、すべての不完全なステップが最初から始まり、まさにそのポイントから停止されました。すべてのことで、プログラマはそれらのロジックをコードしなければなりません。 –
@ SabirKhanありがとうございます。 –