인프런 커뮤니티 질문&답변

신찬섭님의 프로필 이미지
신찬섭

작성한 질문수

스프링 배치

Chunk Process 아키텍처

스프링 배치 청크 프로세스 - 아키텍처 문의

작성

·

371

0

Chunk Process 아키텍처 챕터를 보고 있는데요.

 

아키텍처 그림에서 ItemReader가 읽은 item이 null 일 경우,

모든 반복문 및 Chunk 프로세스를 종료한다고 되어 있는데

ItemProcessor, ItemWriter 처리 이후에 Chunk 프로세스가 종료되는게 맞지 않나요?( 설명만 봐서는 read에서 null 리턴시 바로 Step이 종료되는 것 처럼 이해가 됩니다. )

예를 들어 11개의 아이템이 있고 Chunk 사이즈가 5이면,

Chunk가 총 3개로 처리가 되고, 각 Chunk의 사이즈는 5, 5, 1 로 3번의 트랜잭션 처리가 처리되고 난 뒤에 Chunk 프로세스가 종료가 되니까요.

답변 1

1

정수원님의 프로필 이미지
정수원
지식공유자

말씀하신 것 처럼 ItemReader 에서 읽어온 데이터는 모두 처리가 된 이후에 프로세스가 종료됩니다

근데 잘 생각해 보면 ItemReader 가 null 이라는 것은 ItemProcessor 와 ItemWriter 의 과정이 모두 끝난 다음에 나올수 있는 값입니다

ItemReader 가 null 을 리턴한다는 것은 더 이상 처리해야할 데이터가 없다는 것을 전제로 하는 것입니다

ItemProcessor 와 ItemWriter 가 ItemReader 로부터 소스를 받아 처리하고 세개의 클래스는 순서대로 흘러가기 때문에 ItemProcessor 와 ItemWriter 가 처리하는 도중에 ItemReader 가 단독으로 작업을 진행할 수 없습니다

즉 ItemReader 는 항상 작업의 맨처음 시작이기 때문에 시작부터 null 이 나온다면 더 이상 이후의 과정은 진행되지 않음을 의미한다고 이해하시면 될 것 같습니다

신찬섭님의 프로필 이미지
신찬섭

작성한 질문수

질문하기