📌 spring-batch 10
✔️ Async Step
- 일반 step은 ItemReader -> ItemProcessor -> ItemWriter 각 하나씩 수행된다.
- Async step은 ItemReader는 동일하지만 ItemProcessor와 ItemWrtier가 Async로 수행된다.
✔️ Async ItemProcessor와 ItemWriter를 위한 의존성 추가
implementation 'org.springframework.batch:spring-batch-integration'
✔️ main application에 설정
- async 후 배치 수행 후 안전한 종료를 위해 아래 코드를 추가한다.
System.exit(SpringApplication.exit(SpringApplication.run(...)));
✔️ TaskExecutor 빈 추가
@Bean
@Primary // 이미 정의된 Bean 대신 정의한 Bean을 사용
TaskExecutor taskExecutor() {
ThreadPollTaskExecutor te = new ThreadPollTaskExecutor();
te.setCorePollSize(10); // pool의 기본 쓰레드 사이즈
te.setMaxPoolSize(20); // 최대 쓰레드 사이즈
te.setThreadNamePrefix("batch-thread-");
te.initialize();
return te;
}
✔️ AsyncItemProcessor 구현tasExecutor는 앞서 정의한 Bean을 주입한다.
private AsyncItemProcessor<User, User> itemProcessor() {
ItemProcessor<User, User> itemProcessor = user -> {
if (...) return user;
return null;
};
AsyncItemProcessor<User, User> asyncItemProcessor = new AsyncItemProcessor<>();
asyncItemProcessor.setDelegate(itemProcessor);
asyncItemProcessor.setTaskExecutor(this.tasExecutor);
}
✔️ AsyncItemWriter 구현
private AsyncItemWriter<User> itemWriter() {
ItemWriter<User> itemWriter = users -> users.foreach(
...
...
)
AsyncItemWriter<User> asyncItemWriter = new AsyncItemWriter<>();
asyncItemWriter.setDelegate(itemWriter);
return asyncItemWriter;
}
✔️ step의 processor 에러
- output 타입을 Feature로 감싸줘야 한다.
<User, Feature<User>>chunk(...) .reader() .processor() .writer()
👍 수강인증

패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다
'Spring Batch' 카테고리의 다른 글
| 패스트캠퍼스 챌린지 27일차 - Spring Batch 9 (0) | 2021.10.02 |
|---|---|
| 패스트캠퍼스 챌린지 26일차 - Spring Batch 8 (0) | 2021.10.01 |
| 패스트캠퍼스 챌린지 25일차 - Spring Batch 7 (0) | 2021.09.30 |
| 패스트캠퍼스 챌린지 24일차 - Spring Batch 6 (0) | 2021.09.29 |
| 패스트캠퍼스 챌린지 23일차 - Spring Batch 5 (0) | 2021.09.28 |