ジョブリポジトリは春のバッチを実行するために必要な、それは実際には(例えば、春のバッチ管理者を設定したり、独自のUIを書いて)どんな価値を提供するために、作業のビットを必要とするものの一つです。実際には、Spring Batchを使って見たことがあるほとんどのプロジェクトでは、ジョブリポジトリは完全に無視される傾向のある書き込み専用のものです。あなたはそれを持っている必要があります、誰もそれを見ていることはありません。 SQLクライアントを使用してテーブルを掘り起こし、エラー、警告、およびスタックトレースを含むログを検索することは、ロギングを適切に設定し、適切なロギングを行うことが重要なサーバー側のビジネスにとって難しい要件です。
IMHOの場合、ジョブリポジトリをオプションにすると、複雑さが増します。ほとんどのプロジェクトは単にそれを必要としません。また、それを必要とするほとんどのプロジェクト(マルチノードバッチクラスタなど)では、実際にはクロスクラスタ状態管理(例:Zookeeper)を提供することを意図した他の技術も検討する必要があります。また、その時点で、Spring Cloud、ハープなどのソリューションを検討する方がよいでしょう。スプリングバッチソートは、こうした種類のソリューションに向けた足がかりです。オフに注意すべき
いくつかの点:
は
- 春のバッチを使用すると、おそらく本番データベースとは別の場所にしたい情報を持つテーブルを作成し、記入します。
- プロダクションDBで春のバッチテーブルを作成した場合(基本的に気にしないテーブルの余分なデータベースをプロビジョニングすると、過剰な作業になる可能性があるため)、おそらくこれらのテーブルがdb移行スクリプト。
- これらのテーブルに蓄積されたデータを定期的に整理することを検討することもできます。
- デフォルトでは、ジョブは1回だけ実行できますが、実際には複数回実行できるように設定する必要があります。実際にはすでに実行されているジョブリポジトリに格納されており、何かを何度も実行するとデフォルトでは何も実行されません。この「機能」は私を複数回驚かせてくれました。解決策は、あなたの仕事に
.incrementer(new RunIdIncrementer())
を追加することです。
- Springバッチでは、ジョブとステップがクラスタ内に分散されることを前提としています。したがって、ジョブリポジトリは、永続化される実行コンテキストを介して情報を渡す唯一の方法です。