web-dev-qa-db-ja.com

春のバッチの利点

Spring Batchフレームワークはデータをチャンクで処理することを理解しました。しかし、Javaを使用して同じチャンク機能を実現できる場合、なぜバッチフレームワークに移行する必要があるのか​​と考えていました。

スプリングバッチフレームワークに移行する理由が他にもある場合は、どなたか教えていただけますか?

27
pamperay

あなたの質問を少し言い換えて、これがそれを解決するかどうか見てみましょう。

Spring Batchは、バッチアプリケーションを構築するときに自分で処理する必要があると何を提供しますか?

Spring BatchはJSR-352(Javaバッチ仕様)のベースとして機能し、その仕様が公開されたため、Java space。とは言え、基本的なJavaが行うことの範囲外で、Spring Batchが提供する多くのことがまだあります。

「基本」バッチジョブ内

単純なバッチジョブの範囲内で、Spring Batchは、すべてのエンタープライズカテゴリでテストされたユーティリティと実装のコレクションを提供します。次に例を示します。

  • 入出力の膨大なオプション(ファイル、JDBC、NoSQL、JMSなど)をカバーする17を超えるItemReaderおよび15 ItemWriterの実装。これらはすべて宣言型I/Oオプションを提供するため、ステートフルなリーダーとライターのためにコードを記述してテストする必要はありません。
  • Tasklet(JSR-352のBatchletに相当するSpring Batchの実装)のコレクション。シェルコマンドの実行やHadoopとのインターフェースの実装も含まれます。
  • ジョブを停止/開始/再開し、実行間で状態を維持する機能。
  • 処理中にレコードをスキップして再試行する機能。
  • トランザクション管理。 Spring Batchがトランザクションを処理します。
  • Spring Integrationを統合することにより、メッセージングを介してエラーが発生したときに他のシステムに通知する機能。
  • JavaまたはXMLベースの構成。
  • DI、AOP、テスト容易性など、Springのすべての機能.
  • ベンダーの独立性-Spring Batchを使用することで、オープンソースであり、1つのベンダーに縛られないフレームワークを使用できます。

追加の利点

Spring Batchがテーブルにもたらすものの上記の例に加えて、それははるかに進んでいます:

  • スケーラビリティオプション-Spring Batchは、スレッドを介した単一のJVM内(マルチスレッドステップ、ローカルパーティショニング、およびスプリット)からマルチJVMスケーラビリティ(リモートパーティショニングおよびリモートチャンク)まで、さまざまなスケーラビリティオプションを提供します。
  • Spring Integrationとの統合-Spring Integrationは、エラーメッセージ、ファイルのディレクトリのポーリング、ファイルの自動FTPなどの処理を行う堅牢なバッチアプリケーションを構築できるようにする多数の便利な要素を提供します。
  • ビッグデータのサポート-Spring for Apache Hadoopプロジェクトを通じて、Spring BatchにはHadoopとの連携を可能にする多数の拡張機能があります。 YARNでSpring Batchジョブを実行でき、Pig、Hive、MapReduceなどのジョブを実行できます。
  • Spring XDとの統合-Spring XDは、バッチジョブの展開、管理、および実行のための分散ランタイムを提供します。

私は個人的に、バッチ処理をプログラミングの「設定したら忘れる」モデルと見なしています。魅力的ではありませんが、バッチ処理は非常に便利な処理モデルであり、多くの人が理解するよりも場所で役立ちます。 Spring Batchは、堅牢なバッチジョブをできるだけ簡単に開発できる環境を提供します。

61
Michael Minella