[spring Batch Series] 09.scheduling
March 25, 2025
스케쥴링
- 지정된 시간이나 정기적인 간격으로 작업을 실행할 수 있는 기능
전략
1. TaskScheduler
- 스프링 프레임워크의 일부이며, 작업 스케쥴링을 위한 더 높은 수준의 추상화를 제공한다.
TaskScheudler의 schedule 메소드로 예약할 수 있다.
@Scheduled같은 어노테이션으로도 가능하다.
2. Quartz
- 더 복잡한 스케쥴링을 지원
- 스프링 배치 작업을 지정하는 Quartz의 job을 지정할 수 있다.
- 서버 재시작 후에도 계속 실행할 수 있다.
- 클러스터 환경에서 수행할 수도 있다.
- 복잡한 스케쥴링
트랜잭션
- 롤백 및 트랜잭션 관리는 재시도 및 건너뛰기에서 중요한 역할을 한다.
- 데이터의 일관성과 무결성을 보장한다.
- 트랜잭션을 기반으로 청크에 대한 트랜잭션을 구분한다.
- 재시도 기준
- 항목이 실패하고 재시도를 트리거하면, 트랜잭션은 현재 청크 처리 끝에서 롤백되어 데이터 일관성을 유지한다.
- 모든 재시도가 실패하면 다음 항목으로 넘어가며 실패를 기록한다.
- 건너뛰기
- 복구 불가능할 것으로 보면 건너뛰고 현재 청크를 롤백한다.