web-dev-qa-db-ja.com

春のスケジュールされたタスクと春のバッチジョブの違いは何ですか

春のスケジュールされたタスクバッチジョブの違いがわかりません。スケジュールされたタスクとは、次のように構成されているタスクを意味します。

@EnableScheduling 
public class AppConfig{
..

のように使用されます

@Scheduled(fixedRate=550)
public void doSomething(){
..

バッチジョブとは、次のことを意味します。

@EnableBatchProcessing
public class AppConfig{
..

そして次のような多くの実装:ジョブジョブランチャーステップItemReaderItemWriter = ...など

実装の違い以外に、それらの主な違いを知りたいです。また、単純なスケジュールされたタスクを使用できるのに、なぜバッチジョブを使用し、多くの長い実装を行うのか興味があります。スケジュールされたジョブの実装は非常に簡単ですが、バッチジョブによると不利な点があったのではないでしょうか。

7
wertigom

私が考えることができる2つの側面:ジョブの実行が失敗したときのafaik、2。実行では、同じジョブパラメータで実行されます..少なくともこれを構成できると思います。そして、この種のエラー状況は、すべてを同じ場所に手動で書き込むよりも簡単に構成できます(スケジュールされた方法)。次に、バッチは、どこかからデータを読み取り、どこかに書き込む必要があるときに、コードに構造を与える可能性があります...バッチには、ある種のリーダー、プロセッサ、ライタースキーマがあります。また、自動作成されたデータベーステーブル(BATCH_JOB_INSTANCE)とバッチジョブの結果..ジョブが開始されたときなど...

編集:バッチのその他の理由:大量のデータ、トランザクション管理、チャンクベースの処理、宣言型I/O、開始/停止/再起動、再試行/スキップ、Webベースの管理インターフェイス。

2
akcasoy

Spring Schedulerは、スケジュールに基づいて何かを調整するためのものです。 Spring Batchは、複雑な計算問題を構築するために設計された堅牢なバッチ処理フレームワークです。 Spring Batchは、ジョブのオーケストレーションを処理せず、ジョブの構築のみを処理します。必要に応じて、SpringSchedulerを使用してSpringBatchジョブを調整できます。

7
Michael Minella