Spring Batch—アーキテクチャ

4002 ワード

Spring Batchドメイン言語


  • JobLauncherは、Jobを実行するコンポーネントです.
  • Jobは導入作業です.
  • ジョブレポートは、ジョブ実行およびジョブ、ステップを格納する.
  • Stepは、導入作業の段階です.
  • ItemReader、ItemProcessor ItemWriterは、データの処理および書き込みの構成です.

  • Application Layer

  • ユーザコードおよび構成
  • 業務、サービスロジック
  • Coreは、インフラストラクチャを使用して導入機能を実現します.
  • Core Layer

  • バッチ・タスクの開始および制御に必要な
  • クラス
  • Job, Step, JobLauncher
  • Infrastructure Layer

  • 外部とのインタラクション
  • ItemReader, ItemWriter, RetryTemplate
  • Job


  • は、展開プロセス全体をカプセル化するドメイン
  • である.
  • Stepの順序を定義します.
  • JobParametersを受け入れます.
  • @Bean
    public Job footballJob() {
        return this.jobBuilderFactory.get("footballJob")
                            .start(playerLoad())
                            .next(gameLoad())
                            .next(playerSummarization())
                            .build();
    }

    Step


  • ジョブ処理部
  • Chunkに基づくステップとTaskletステップの2種類に分けられる.
  • ChungベースStep


  • ブロックに基づいて、1つのトランザクションでデータを処理します.
  • commityIntervalのようにデータを読み出し、トランザクション境界内にブロックサイズでデータを書き込む.
  • List items = new ArrayList();
    for (int i = 0; i < commitInterval; i++) {
        Object item = itemReader.read();
        if (item != null) {
            items.add(item);
        }
    }
    
    List processedItems = new ArrayList();
    for (Object item : items) {
        Object processedItem = itemProcessor.process(item);
        if ( processed != null ) {
            processedItems.add(processedItem);
        }
    }
    
    itemWriter.write(processedItems);
  • 純kSize:1つのトランザクションで使用するアイテム数
  • commityInterval:reader一度に読み込む項目数
  • zunkSize>=commitIntervalですが、同じ方法が望ましいです.
  • @Bean
    public Job sampleJob(JobRepository jobRepository, Step sampleStep) {
        return this.jobBuilderFactory.get("sampleJob")
                .repository(jobRepository)
                .start(sampleStep)
                .build();
    }
    
    @Bean
    public Step sampleStep(PlatformTransactionManager transactionManager) {
        return this.stepBuilderFactory.get("sampleStep")
                .transactionManager(transactionManager)
                .<String, String>chunk(10)
                .reader(itemReader())
                .writer(itemWriter())
                .build();
    }
    構成
  • ItemReader、ItemProcessor、およびItemWriterインプリメンテーション.
  • ItemProcessorは省略できます.
  • TaskletStep


  • は、1つのトランザクションでデータを処理します.
  • は、単純な処理のために使用される.
  • @Bean
    public Step step1() {
        return this.stepBuilderFactory.get("step1")
                .tasklet(myTasklet())
                .build();
    }
  • Taskletインプリメンテーションを構成します.内部に簡単な読み取り、書き込み、処理ロジックを追加します.
  • RepeatStatus(繰り返し状態)を設定します.RepeatStatus.FINISHED
  • Spring Batchアーキテクチャ



    Spring Batchアーキテクチャは、導入の実行と管理に使用されるメタデータを格納します.
    メタデータは、Batchの各構成部品を表します.
    各クラスはbatchを実行するときに実行され、使用されます.これは、これらのレコードがデータベース化され、保持されることを意味します.

    メタデータ・モードの使用

  • Spring Batch Frameworkは実行時にメタデータテーブルを使用するため、初期設定が必要です.
  • Spring Batch Frameworkの一部に属し、変更せずにクエリーのみを行います.
  • Jobの履歴、パラメータなどの実行結果を問い合わせることができます.
  • の導入結果については、ほとんどの場合、ログと個別の実行履歴が残るため、クエリーを必要とする内容はあまりありません.