zero's blog


  • Home

  • Posts

  • About

  • Search
close

Spring Batch

Published at: 2021-01-06   |   Categories: Spring     |   Reading: 108 words ~1min

Spring Batch Architecture

Spring Batch Architecture

Applicationレイアー

  • all batch jobs
  • custom code by developers

Batch Coreレイアー

  • バッチジョブの起動
  • バッチジョブの制御
  • JobLauncher,Job,Stepの実装

Batch Infrastructureレイアー

  • common readers
    • such as ItemReader
  • common writers
    • such as ItemWriter
  • services
    • such as the RetryTemplate
  • core framework

Spring Batchの概念

batch model

JobRepository

  • JobやStepの実行状況や実行結果を保存しておくところ。

  • 管理情報は、SpringBatchが規程するテーブルスキーマを元にデータベース上に永続化される。

    Entityクラス テーブル名 説明
    JobExecution BATCH_JOB_EXECUTION ジョブの状態・実行結果の保持する。1回のジョブ実行
    JobExecutionContext BATCH_JOB_EXECUTION ジョブ内部のコンテキストを保持する。1回のジョブ実行
    JobExecutionParams BATCH_JOB_EXECUTION_PARAMS 起動時に当られたジョブパラメータを保持する。1回のジョブ実行
    StepExecution BATCH_STEP_EXECUTION ステップの状態・実行結果、コミット・ロールバック件数を保持する。1回のステップ実行
    StepExecutionContext BATCH_STEP_EXECUTION_CONTEXT ステップ内部のコンテキストを保持する。1回のステップ実行
    JobInstance BATCH_JOB_INSTANCE ジョブ名、及びジョブパラメータをシリアライズした文字列を保持する。ジョブ名とジョブパラメータの組み合わせ
  • 上記のテーブル手動で作るが必要です。

    • DDL Scripts
  • @EnableBatchProcessingannotation利用すると、frameworkからJobRepositoryを提供します。

  • カスタマイズの場合、BatchConfigurerインターフェースをimplementsしてカスタマイズができます。

JobLauncher

  • ジョブを起動するためのインタフェース。
  • 基も基本的な実装はSimpleJobLauncherです.
    • 注意: Httpリクエストから起動しようとする時、SimpleJobLauncherが呼び出し元にすぐに戻るように、起動を非同期で行う必要がありあります。

Job

  • SpringBatchにおけるバッチアップリケーションの一連の処理をまとめた1実行単位。
  • ジョブの実行
    • JobLauncher一つとjob一つが必要です。

Step

  • ジョブを構成する処理の単位。1つのジョブに1~N個のStepを持たせることが可能です。
  • 一つのジョブを複数のStepに分割して処理することにより、処理の再利用、並列化、条件分岐が可能です。
  • チャンクモデルまだタスクレットモデルのいずれがで実装する。

ItemReader,ItemProcessor,ItemWriter

  • チャンクモデルを実装する際に、データの入力/加工/出力の三つに分割するためのインタフェース。
  • タスクレットモデルでは,タスクレット内に入出力、入力チェック、ビジネスロジックのすべてを実装する必要がある。

Listener

  • Job、Step、ItemReader、ItemProcessor、ItemWriter各段階の実行状況について、Listenerで監視ができます。

  • 利用頻度が高いのは下記の二つです。

    • JobListener: ジョブの実行に対して処理を挟み込むためのインターフェース
    • StepListener: ステップの実行に対して処理を挟み込むためのインターフェース
  • その他のリスナー

    • ChunkListener、ItemReadListener、ItemProcessListener、ItemWriteListener
  • リスナーの実装

    • 各種リスナーインターフェースをimplementsして実装する。
    • 各種リスナーインターフェースに対応したアノテーションを付与する。
    リスナーインターフェース アノテーション
    JobExecutionListener @beforeJob@afterJob
    StepExecutionListener @BeforeStep@AfterStep
    ChunkListener @BeforeChunk@AfterChunk@afterChunkError
    ItemReadListener @BeforeRead@AfterRead@OnReadError
    ItemProcessListener @beforeProcess@afterProcess@onProcessError
    ItemWriteListener @BeforeWrite@AfterWrite@OnWriteError
#SpringBatch#
Spring Boot
SpringBoot Actuatorを使用してアプリの管理と監視を行う
zero

zero

16 Blogs
3 Categories
7 Tags
© 2020 - 2021 zero's blog
Powered by - Hugo v0.81.0
Theme by - NexT
0%