이전 게시글
https://wn1331.tistory.com/254
Spring Batch 5 - 3. Step 개요
이전 게시글 : https://wn1331.tistory.com/253 Spring Batch 5 - 2. Batch 설정하기, Job 이전 포스팅에서 했던 프로젝트에서 추가로 Batch 설정을 추가한다. 1. Spring Batch MetaData란? 메타데이터 테이블은 Spring Batch
wn1331.tistory.com
1. Task 기반 step
task 기반 step은 단순한 배치 처리에 이용되는 step이다.
대량 처리를 하는 경우에 task기반으로 step을 구현하면 코드가 매우 복잡해진다.
Spring batch 5 버전에서의 task기반 step을 사용해 보자.
@Bean
@JobScope
public Step step1() {
return new StepBuilder("exampleStep1", jobRepository)
.tasklet((contribution, chunkContext) -> {
System.out.println("hello step1");
return RepeatStatus.FINISHED;
}, platformTransactionManager)
.build();
}
위처럼 작성하면 되는데, 스프링배치5 이전 버전에서 사용했던 것보다 뭔가 더 복잡해진 거 같은 기분이 든다.
2. Chunk 기반 step
chunk기반 step은 대량 처리를 위한 step이다. task기반 step보다 많은 구현이 필요하며, chunk로 나누어 데이터를 처리한다.
ItemReader, ItemProcessor, ItemWriter로 구성되어 있으며, ItemProcessor는 생략이 가능하다.
Reader, Processor, Writer에 대한 설명은 각각 포스팅하여 다루어 볼 예정이다.
간단한 Chunk기반 Step을 한번 구현해 보자.
일정 개수(size)만큼 읽어들여 그만큼의 출력문을 처리하는 예시 코드이다.
ItemReader, ItemProcessor, ItemWriter를 사용화지 않고, 직접 reader, processor, writer를 구현한 코드이다.
(실제로 데이터를 처리할 때 위처럼 하면 안된다. )
size의 초기값은 0이고, 0,1,2.....9까지 10개의 item이 한개의 chunk로 수행된다. 그리고 10의 item은 2번쨰 chunk로 실행.
결국 2개의 chunk로 step이 수행된다. read가 10번 실행하고, item들이 processor로 넘어가 출력이 된다.
그리고 processor에서 return 한 item들이 writer로 가서 하나의 chunk를 배열로 가지는데, 그것을 출력한 것.
두번째 chunk에서는 10 하나의 item만 들어있어서 아래와 같이 출력되었다.
아래는 출력 화면
앞으로의 포스팅들은 전부 Chunk 기반 Step에 관한 글이 될 것이다. ItemReader / ItemProcessor / ItemWriter에 관한 포스팅을 전부 해볼 생각.
'Spring > Spring Batch' 카테고리의 다른 글
Spring Batch 5 - 5. ItemReader (0) | 2023.10.22 |
---|---|
Spring Batch 5 - 3. Step 개요 (0) | 2023.10.20 |
Spring Batch 5 - 2. Batch 설정하기, Job (1) | 2023.10.20 |
Spring Batch 5 - 1. 시작하기 (0) | 2023.10.20 |