티스토리 뷰

반응형

배치 처리할  있는 방법은 크게 2가지로 나뉩니다.

 

Tasklet로는 단순하게 처리할 수 있는 장점이 있으나, 대 용량을 감당하기엔 부하를 감당할 수 없습니다.

따라서 Chunk를 통해 쪼개서 넣을 필요가 있는데, Tasklet로도 쪼개서 넣을 수 있지만, 가독성에서 

떨어지기 때문에 권장하지 않습니다.

 

현재 사용하고 있는 실무에서도 대용량은 Chunk를 적극 사용하고 있다.

 

그렇다면 Tasklet 방식과 Chunk 방식에 대해 알아보자.

 

 Tasklet을 사용한 Task 기반 처리

  • 배치 처리 과정이 비교적 쉬운 경우 쉽게 사용
  • 대량 처리를 하는 경우 더 복잡
  • 하나의 큰 덩어리를 여러 덩어리로 나누어 처리하기 부적합

 Chunk를 사용한 chunk(덩어리) 기반 처리

  • ItemReader, ItemProcessor, ItemWriter의 관계 이해 필요
  • 대량 처리를 하는 경우 Tasklet 보다 비교적 쉽게 구현
  • 예를 들면 10,000개의 데이터 중 1,000개씩 10개의 덩어리로 수행

 이를 Tasklet으로 처리하면 10,000개를 한번에 처리하거나, 수동으로 1,000개씩 분할

 

Task기반 배치와 Chunk 기반 배치

 reader에서 null을 return 할 때 까지 Step은 반복

 <INPUT, OUTPUT>chunk(int)

  • reader에서 INPUT 을 return
  • processor에서 INPUT을 받아 processing 후 OUPUT을 return

 INPUT, OUTPUT은 같은 타입일  있음

  • writer에서 List<OUTPUT>을 받아 write

 

 배치를 실행 필요한 값을 parameter를 통해 외부에서 주입

 JobParameters는 외부에서 주입된 parameter를 관리하는 객체

 parameter를 JobParameters Spring EL(Expression Language) 접근

  • String parameter = jobParameters.getString(key, defaultValue);
  • @Value(“#{jobParameters[key]}”)

 

반응형
댓글
공지사항