2017-07-20 6 views
0

バッチタスクはエンドユーザーによってトリガーされたため、アプリケーションの起動時にはすべてのバッチジョブを実行しません(spring.batch.job.enabled=false)。アプリケーションは、アプリケーションの再起動またはまたは例外割り込みによって引き起こされ、中断バッチジョブを続けることができたのスプリングバッチを開始しアプリケーションの起動後に中断されたバッチジョブを続行する方法

しかし、私はこの下のような状況に対処するための解決策があると期待し

、。

+0

私の既存の質問[こちら](https://stackoverflow.com/questions/40990935/resume-a-spring-batch-job-from-last-processed-point)をご覧ください。私はあなたの仕事を再開するために問題のコードを入れました。そのコードの欠点だけです、すべての不完全なステップが最初から始まり、まさにそのポイントから停止されました。すべてのことで、プログラマはそれらのロジックをコードしなければなりません。 –

+0

@ SabirKhanありがとうございます。 –

答えて

0

Springバッチでの失敗/中断ジョブの再開は、同じジョブパラメータで同じジョブを送信することによって達成されます。

したがって、あなたがいない完了したジョブの実行持つすべてのジョブ・インスタンスを見つけ、BATCH_JOB_INSTANCEとBATCH_JOB_EXECUTIONテーブルに参加することで失敗したジョブ(ジョブのメタデータを格納するDBを使用していると仮定)

  • を再送信するには、以下の操作を行うことができます
  • は、上記の不完全なジョブ・インスタンスごとに最新BATCH_JOB_EXECUTIONSを見つけると、BATCH_JOB_INSTANCEからジョブ名を使用してジョブを再サブミットしてください
  • BATCH_JOB_EXECUTION_PARAMS
  • から対応するジョブパラメータを検索し、BATCH_JOB_EXECUTION_PARAMSからジョブパラメータ
+1

私はJobOperatorなどから同様の情報を取得する簡単な方法があると思います。 –

+0

あなたが正しいと思うかもしれません。 JobOperatorを使用すると、停止したジョブを再開できます。問題は、停止した時点(基本的には再開)からジョブを再開させるか、新規に提出しプロセスを最初から処理するかどうかです。 – Kaps

+0

なぜそれを試してみませんか? :)同じジョブパラメータで送信している場合は、通常は失敗した場所から開始します。 –

関連する問題