
Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공한다.
또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능도 제공한다.
Spring Batch에서 배치가 실패하여 작업 재시작을 하게 된다면 처음부터가 아닌 실패한 지점부터 실행을 하게 된다.
또한 중복 실행을 막기 위해 성공한 이력이 있는 Batch는 동일한 Parameters로 실행 시 Exception이 발생하게 된다.
Spring Batch의 특징은 다음과 같다.
Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공1개의 작업에 대한 명세서이다. 어디까지가 1개의 작업인지 애매할 수 있지만 그 기준은 상황별로 재량껏 판단할 수 있다.
Job은 여러개의 Step을 포함할 수 있다.Job name을 통해 Job을 구분할 수 있다.Job name으로 Job을 실행시킬 수 있다.Job Builder Factory로 쉽게 Job을 만들 수 있다.Ex ) Job : 게임을 한다.
Step 1. 컴퓨터를 켠다.
Step 2. 게임에 로그인 한다.
Step 3. 게임 시작을 누른다.
JobInstance는 Job의 실행의 단위를 나타냅니다. Job을 실행시키게 되면 하나의 JobInstance가 생성된다.
예를들어 1월 1일 실행, 1월 2일 실행을 하게 되면 각각의 JobInstance가 생성되며 1월 1일 실행한 JobInstance가 실패하여 다시 실행을 시키더라도 이 JobInstance는 1월 1일에 대한 데이터만 처리하게 된다.
JobExecution은 JobInstance에 대한 실행 시도에 대한 객체이다.
1월 1일에 실행한 JobInstacne가 실패하여 재실행을 하여도 동일한 JobInstance를 실행시키지만 이 2번에 실행에 대한 JobExecution은 개별로 생기게 된다.
JobExecution는 이러한 JobInstance 실행에 대한 상태, 시작시간, 종료시간, 생성시간 등의 정보를 담고 있다.
1개의 Job 내에서 공유하는 공간(Contex)이다.
1개의 Job에 여러개의 Step이 있다면 그 Step들은 해당 공간을 공유할 수 있다.
Job이 시작될 때 필요한 시작 조건을 JobParameters에 넣는다.
동일한 Job에 JobParameters까지 동일하면 같은 JobInstence이다.
Ex ) 편의점 리스트를 가져와서 저장하는 Job
- 밤 10시에는 C편의점 리스트의 정보 갱신
- 밤 11시에는 G편의점 리스트의 정보 갱신
조건 )
- 밤 10시에는 'JobParameter = C편의점'으로 구동되어야 함
- 밤 11시에는 'JobParameter = G편의점'으로 구동되어야 함
Spring Batch에서는 EnableBatchProcessing 어노테이션을 달면 아래 bean들을 사용할 수 있도록 미리 구현되어있다.
Spring Batch 프로젝트를 만들게 된다면 필수적으로 EnableBatchProcessing를 추가해 주어야 한다.
@EnableBatchProcessing를
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}