PSD( Private-Self-Development )

Spring Batch 이벤트 리스너 본문

Backend/Spring Batch

Spring Batch 이벤트 리스너

chjysm 2023. 4. 24. 10:31

Spring Batch 는 프로세스 간에 다양한 이벤트 리스너 를 제공한다.

이를 공부해보자!

 

프로세스 간 이벤트 리스너

 

JobExecutionListener, StepExecutionListener

  • Job/Step 의 실행 전/후 이벤트 할당
  • Job/Step 의 성공 여부와 상관없이 호출된다.
  • 성공 실패 여부는 JobExecution/StepExecution을 통해 알 수 있다.

 

예시

public Job job() {
	return jobBuilderFactory.get("job")
		.start(step())
		.next(flow())
		.listener(JobExecutionListener)
		.listener(Object) // 어노테이션 방식
		.build();
}

public Step step() {
	return stepBuilderFactory.get("step")
		.tasklet(tasklet())
		.listener(StepExecutionListener)
		.build();
}

 

 

ChunkListener

  • 트랜잭션이 시작되기 전 ( ItemReader 의 read() 호출 전 ) 
  • Chunk 가 커밋된 후 ( ItemWriter 의 write() 호출 전, 롤백 시 X )
  • 오류 발생 및 롤백 시 호출 
public Step step() {
	return stepBuilderFactory.get("step")
		.chunk(chunkSize)		
		.listener(ChunkListener)
		.build();
}

 

ItemReadListener, ItemProcessListener, ItemWriterListener 

  • 메서드 호출 전, 성공/실패 시 이벤트 할당
public Step step() {
	return stepBuilderFactory.get("step")
		.chunk(chunkSize)
		.reader(ItemReader)
        // .processor(ItemProcessor)
        // .writer(ItemWriter)
		.listener(ItemReadListener)
		.build();
}

 

 

 SkipListener 

  • read, process, write  수행 중 skip 발생 한 경우 이벤트 할당 

 

RetryListener 

  • 재시도 전, 후, 실패 시 마다 이벤트 할당

 

 

 

 


출저
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/dashboard