Spring Batch

정훈·2023년 4월 30일
0

스프링 배치는 대용량 일괄처리 나, 특정 지정 시점에 스케줄러를 이용하여 작업이 필요한 경우 나 , 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등등 기능을 제공함.

  • 스프링배치는 Batch Job을 관리하지만 실행시키는 기능은 지원하고 있지 않는다.
    • 그래서 Quartz, Scheduler,Jenkins 등등으로 실행시켜야한다.

Job

  • Job은 배치의 실행 단위이고, step은 Job의 세부단위라고 말할수있음.
  • step의 흐름을 관리할수있다.
    • A step 실행후 ,B step 실행 이런식…
      • A step 과 B step을 한번에 실행시킬수도있음.

chunk Base

ItemReader, ItemProcessor, ItemWriter 이쪽부분들이 chunkBase

  • 하나의 데이터를 n개씩 나눠서 실행

ItemReader

  • 배치 처리 대상 객체를 읽어 ItemProcessor 또는 ItemWriter에게 전달
    • 파일 또는 DB에서 데이터를 읽음.

ItemProcessor

  • input객체를 output객체로 필터링 후 processing 해서 ItemWriter에게 전달함.
    • ItemReader에서 읽어 온 데이터를 수정 또는 ItemWriter 대상인지 필터링함
    • ItemProcessor는 Optional하고
    • ItemProcessor가 하는 일을 ItemReader 또는 ItemWriter가 대신할 수 있음 .

ItemWriter

  • 배치 처리 대상 객체를 처리함
    • 예를 들면 DB update 를 하거나 처리 대상 사용자에게 알림을 보냄 .

Job Repository

배치 실행을 위한 메타 데이터가 저장되는 테이블

업로드중..

  • spring-batch-core/org.springframework/batch/core/* 에 위치함
  • Batch_JOB_INSTANCE (row가 생성되는 기준)
    • job 실행시에 job의 이름과 key를기준으로 row가 생성이됨 .
  • BATCH_JOB_EXECUTION
    • job이 실행되는 동안 시작.종료 시간 , job상태 등을 관리
    • 하나의 Batch Job인스턴스는 n개의 EXECUTION을 포함함.
  • BATCH_JOB_EXECUTION_PARAMS
    • job을 실행하기 위해 주입된 parameter 정보 저장
  • BATCH_JOB_EXECUTION_CONTEXT
    • Job이 실행되서 공유해야할 데이터를 직렬화해서 저장함.
  • BATCH_STEP_EXECUTION
    • Step이 실행되는 동안 필요한 데이터 또는 실행된 결과 저장
  • Batch_STEP_EXECUTION_CONTEXT
    • Step이 실행되며 공유해야할 데이터를 직렬화해서 저장
    • 저장된데이터는 step끼리공유(step끼리는 공유를 못해서)를하기위해서는 BATCH_JOB_EXECUTION_CONTEXT에 저장해서 사용해야함

0개의 댓글

관련 채용 정보