평범한 이야기

Spring Batch - 기초정리 본문

컴퓨터 속 이야기/Spring

Spring Batch - 기초정리

SophyBliss 2020. 9. 2. 22:19
반응형

글쓴이는 신입 자바개발자로서 알게되는 모든 것들을 무조건적으로 작성하기로 하였고, 이는 다른 분들의 글을 참고하여 기본적인 내용들을 습득해 나가는 과정을 작성하는 것입니다. 따라서, 100% 신뢰는 금물이며 인용된 글도 있음을 앞서 말씀드립니다. ( 저도 그저 배워가는 사람들 중 한 명입니다. 저를 위해 메모를 하는 용도이나, 이 글을 통해 도움을 얻으셨다면 감사합니다. ) 많은 선배님들의 걸음 덕분에 저도 이 글을 작성합니다. 감사합니다.


배치란

  • 매일 정해진 시간에 일관처리
  • DB 추출을 하여 파일 저장
  • 오류로 종료된 시점 부터 재시작(CHUNK PROCESSING) 가능

구성

1 JOB

= 배치작업

= FLOW

  • 최소 하나의 STEP 을 가짐
  • 유지보수 및 모니터링을 위해 2개 ~ 10개 이하의 STEP 을 갖길 권장함. 

 

2. STEP

= 읽고 가공하고 쓰기를 하나로 묶은 단위

= CHUNK PROCESSING (재시작)

= 하나의 트랜잭션

 


CHUNK PROCESSING 이란

1. ITEM READER (interface)  : 읽기

2. ITEM PROCESOR (interface) : 가공

3. ITEM WRITER (interface) : 쓰기


1. ITEM READER (interface)  : 읽기

> Public interface ItemReader<T>

> T read() 메소드 

  • 읽어들인 데이터 반환.

  • 만일 Null 을 반환할 경우 읽어야 하는 총 데이터의 마지막임을 알 수 있음.
    (예,  DB 하나의 행(row) , Json 배열 하나의 element 반환 등 )

  • 메소드의 반환 값은 ItemProcessor의 INPUT 으로 활용 됨.

 

2. ITEM PROCESSOR (interface) : 가공

> Public interface ItemProcessor <I , O>

> O process( I item )

  • ITEMREADER 에게서 Object 를 넘겨 받아 원하는 방식으로 가공한 뒤 ITEMWRITER 에게 값을 넘겨주는 역할 

  • 한번에 하나의 item 처리 

  • INPUT 과 OUTPUT 을 지정해줘야 함

    - INPUT = ITEMREADER 에게서 넘겨받은 타입 ( I = T )

    - OUTPUT = ITEMWRITER 에게 넘겨줄 타입 ( O = T )

  • (별표) ItemProcessor 가 꼭 필요한 것은 아님.  데이터 가공이 필요하지 않다면 ITEMREADER -> ITEMWRITER 로 바로 값 넘김 가능.

 

3. ITEM WRITER (interface) : 쓰기

> Public interface ItemWriter <T>

  • ITEMREADER 또는 ITEMPROCESSOR 가 넘겨주는 데이터를 LIST 에 하나씩 차곡차곡 쌓음

  • COMMIT-INTERVAL 프로퍼티(property) 에 정의된 개수만큼 데이터가 모이면 write() 메소드 실행

     - INTERVAL 는 STEP 에서 설정 가능  ( STEP 안의 CHUNK 에 작성 )

 

 

 

반응형