본문 바로가기
Spring

[Spring Batch] Spring Batch 정리

by 코딩로그 2023. 6. 1.

프로젝트를 진행하면서 사용했던 Spring Batch에 대해 정리해 보자

 

 

스프링 배치

 

Job

스프링 배치의 핵심은 Job이다. Job은 배치에서 가장 큰 단위이다. 

Job 내부에 각 로직 처리 순서 부분에 해당하는 게 Step이다. 따라서, 하나의 Job에 여러 개의 Step이 있는 1:N 관계이다.

 

Step 

스탭은 Tasklet 또는 ItemReader, ItemWriter, ItemProcessor로 구성된다.

그런데, Tasklet보다는 Chunk 기반으로 적극 사용하라고 멘토님께 조언을 받을 수 있었다.

Chunk로 하면 Chunk size 단위로 처리할 수 있어서 그런 것 같다.

 

 

 

 

 

프로젝트를 하며 1시간마다 배치가 돌아가야 했다. 그런데, 배포 환경에서 배치가 실패하면 절대 안 되는 일이다. 따라서, 에러가 발생해도 무시하거나 배치를 재시작해야 한다.

 

 

 

따라서, 나는 step을 다음과 같이 구성했다.

	@Bean
	public Step step() {
		return stepBuilderFactory.get(BOOK_INTEGRATION_STEP)
			.startLimit(5)//재시작 5번 가능
			.<BookEntity, BookEntity>chunk(CHUNK_SIZE)
			.reader(aladinBatchItemReader)
			.writer(aladinBatchItemWriter)
			.faultTolerant()
			.retryLimit(3) //재시도 3번 가능
			.retry(Exception.class)
			.skip(Exception.class)
			.skipLimit(100)
			.listener(bookIntegrationStepListener)
			.listener(bookIntegrationSkipListener)
			.listener(successStepListener)
			.build();
	}

 

 

startLimit, retryLimit, retry, skip, skipLimit

해당 배치 동작 시 발생할 수 있는 문제들에 대해서 처리하고자 했다. 

 

이때, 재시도 기능을 활성화하기 위해서는 faultTolerant 메서드를 호출해야 한다.

 

 

 

(이후 내용은 추후 추가할 예정....)

'Spring' 카테고리의 다른 글

[Spring]JUnit5를 통한 테스트 코드 구현  (0) 2023.06.12
[Spring] AOP  (0) 2022.10.27
[Spring]Mybatis 연결 - root-context.xml 설정  (0) 2022.10.25
[Spring] 게시판 파일 기능 설정  (0) 2022.10.24
[Spring] Filter, Interceptor  (0) 2022.10.21