Spring Batch - Job

0

Spring Batch

목록 보기
1/1
post-thumbnail
post-custom-banner

Spring Batch

Spring Batch로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리대용량 레코드 처리에 필수적인 기능을 제공한다.

또한 최적화 및 파티셔닝 기술을 통해 대용량고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능도 제공한다.

Spring Batch에서 배치가 실패하여 작업 재시작을 하게 된다면 처음부터가 아닌 실패한 지점부터 실행을 하게 된다.

또한 중복 실행을 막기 위해 성공한 이력이 있는 Batch는 동일한 Parameters로 실행 시 Exception이 발생하게 된다.


Batch 중에서도 Spring Batch로..

Spring Batch의 특징은 다음과 같다.

  • 가볍고 포괄적인 배치 프레임워크
  • Spring Batch로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리대용량 레코드 처리에 필수적인 기능을 제공
  • 최적화, 파티셔닝 기술로 대용량 고성능 배치 작업 가능
  • 확정성이 매우 뛰어남

Job

1개의 작업에 대한 명세서이다. 어디까지가 1개의 작업인지 애매할 수 있지만 그 기준은 상황별로 재량껏 판단할 수 있다.

Job의 특징

  • 1개의 Job은 여러개의 Step을 포함할 수 있다.
  • Job name을 통해 Job을 구분할 수 있다.
  • Job name으로 Job을 실행시킬 수 있다.
  • Job Builder Factory로 쉽게 Job을 만들 수 있다.

Ex ) Job : 게임을 한다.
Step 1. 컴퓨터를 켠다.
Step 2. 게임에 로그인 한다.
Step 3. 게임 시작을 누른다.


JobInstance

JobInstanceJob의 실행의 단위를 나타냅니다. Job을 실행시키게 되면 하나의 JobInstance가 생성된다.

예를들어 1월 1일 실행, 1월 2일 실행을 하게 되면 각각의 JobInstance가 생성되며 1월 1일 실행한 JobInstance가 실패하여 다시 실행을 시키더라도 이 JobInstance는 1월 1일에 대한 데이터만 처리하게 된다.


JobExecution

JobExecutionJobInstance에 대한 실행 시도에 대한 객체이다.

1월 1일에 실행한 JobInstacne가 실패하여 재실행을 하여도 동일한 JobInstance를 실행시키지만 이 2번에 실행에 대한 JobExecution개별로 생기게 된다.

JobExecution는 이러한 JobInstance 실행에 대한 상태, 시작시간, 종료시간, 생성시간 등의 정보를 담고 있다.


JobExecutionContext

1개의 Job 내에서 공유하는 공간(Contex)이다.

1개의 Job에 여러개의 Step이 있다면 그 Step들은 해당 공간을 공유할 수 있다.


JobParameters

Job이 시작될 때 필요한 시작 조건을 JobParameters에 넣는다.

동일한 Job에 JobParameters까지 동일하면 같은 JobInstence이다.

Ex ) 편의점 리스트를 가져와서 저장하는 Job

  • 밤 10시에는 C편의점 리스트의 정보 갱신
  • 밤 11시에는 G편의점 리스트의 정보 갱신

조건 )

  • 밤 10시에는 'JobParameter = C편의점'으로 구동되어야 함
  • 밤 11시에는 'JobParameter = G편의점'으로 구동되어야 함

JobBuilderFactory를 가지고 올 수 없다면?

Spring Batch에서는 EnableBatchProcessing 어노테이션을 달면 아래 bean들을 사용할 수 있도록 미리 구현되어있다.

Spring Batch 프로젝트를 만들게 된다면 필수적으로 EnableBatchProcessing를 추가해 주어야 한다.

@EnableBatchProcessing@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}

EnableBatchProcessing으로 사용할 수 있게된 bean들

  • JobRepository
  • JobLuncher
  • JobRegister
  • JobExplorer
  • PlatformTransactionManager
  • JobBuilderFactory
  • StepBuilderFactory

reference

Spring Batch란? 이해하고 사용하기

post-custom-banner

0개의 댓글