본문 바로가기

강의

(130)
tasklet() - startlimit() / allowStartIfComplete StepContribution과 ChunkContext 에는 step 과 job과 관련된 정보들이 저장되어 있다. startLimit() step의 실행 횟수를 조정할 수 있다. 재시작을 할 수 있는 횟수 제한이라고 보면 된다. startLimit(3) 이라고 한다면 해당 step을 총 3번까지 실행할 수 있다는 것이고 3을 넘게 되면 아래와 같은 에러가 발생한다. allowStartifComplete() 재시작 가능한 job에서 step의 이전 성공 여부와 상관없이 항상 step을 실행하기 위한 설정 (default: 실패 -> 재시작 가능 , 성공 -> 재시작 불가능) -> 성공을 했더라도 재시작이 가능하게 됨.
TaskletStep spring batch 가 제공하는 step의 구현체 중에서 가장 기본이 되는 구현체이다. stepBuilder 클래스가 하위 builder 클래스를 통해서 다양한 step을 만들 수 있는데 그중 우리는 TaskletStep을 실행시키는 Step에 대해서 살펴볼 예정이다. repeatTemplate은 반복하는 기능을 가진 클래스이다. TaskletStep은 반복 실행이 기본이다. taskletstep은 task기반과 chunk 기반으로 나눠져 있다. repeatTemplate을 설정하는 클래스 stepOperations (반복에 대한 설정) taskexecutor는 multithread로 task를 수행해야 하는 경우에 대한 설정 AbstractStep 에서 execute 메서드에서 실행이 됨 (Simp..
StepBuilderfactory taskletStepBuilder: tasklet 인터페이스를 구현한 구현체를 실행시킴 아래와 같이 batch job을 구성하였다. @Bean public Job batchJob() { return this.jobBuilderFactory.get("batchJob") .incrementer(new RunIdIncrementer()) .start(step1()) .next(step2()) .next(step4()) .next(step5()) // .next(step3()) .build(); } step1을 살펴보겠습니다. step1은 3가지 과정을 거치고 있습니다. - get 메서드 호출 - tasklet 메서드 호출 - build 메서드 호출 각각의 과정이 하는 역할을 살펴보도록 하겠습니다. @Bean ..
simpleJob 아키텍처 jobLauncher와 simpleJob 사이의 발생하는 일 job이 실행될 때 오직 하나의 값을 가진 유일한 객체인 jobinstance가 생성된다. jobExecution은 jobInstance의 한번의 실행이고 jobInstatnce와 jobExecution은 1:n 고나계이다. jobExecution은 ExecutionContext 객체를 생성해서 포함하고 있다. simpleJob과 Step 사이 발생하는 일 job을 구성할 때 joblistener를 구성할 수 있고 simplejob과 step사이 job이 실행 전 beforeJob을 실행할 수 있다. step과 tasklet 사이에는 step 마다 stepExecution이 생성되고 StepExeuction은 내부으로 Executionconte..
스프링 배치 실행 - incrementer() jobParameter 값을 해당 job을 식별할 수 있는 유일한 값이다. 일반적으로 동일한 jobParameter 값으로는 재시작을 할 수 없다. 그러나 job이 실행되기 전, 선행되어야 하는 job이 존재하고, 이 job의 parameter가 동일한 경우가 있을 수 있다. 이러한 경우에 사용하는 것이 incrementer 이다. incremental 속성은 validator와 동일하게 CommonJobProperties에 저장되고, 이 내용들은 결국에 SimpleJob 속성에 저장이 된다. Spring batch 에서는 기본적으로 RunIdIncrementer 클래스를 제공하고 있으며 이를 이용하여 incrementer 사용할 수 있다. RunIdIncrementer 클래스는 JobParameters..
스프링 배치 실행 - preventRestart() Job을 실행하게 되면 실패 또는 성공을 하게 되는데 일반적으로 job이 실패 했을 경우에는 재시작이 가능하고 job이 성공했으면 재시작이 불가능하다. 기본 값은 true -> 실패 했을 경우 job 재시작 가능 false로 설정 변경 -> 실패 해도 재시작 불가능 job Execution이 없다는 개념은 job을 처음 실행한다는 것이다. job Execution이 있다는 것은 재시작을 한다는 것이다. 사용법은 아래와 같다. .preventRestart 메서드만 호출하면 되는 것이다. @RequiredArgsConstructor @Configuration public class ExecutionContextConfiguration { private final JobBuilderFactory jobBuil..
SimpleJob - 개념 및 API 소개 (validator) 1. 기본 개념 - Job 실행에 꼭 필요한 파라미터를 검증하는 용도 - DefaultJobParametersValidator 구현체를 기본적으로 지원하며, 좀 더 복잡한 제약 조건이 있다면 인터페이스를 직접 구현할 수도 있음. 2. 구조 - JobParametersValidator 클래스에서 validator 메서드를 사용하며, JobParameterValidator 타입의 인자를 받게 되어있음 job이 실행하게 되면 api에 validate 메서드를 설정하면서 jobParameterValidator @RequiredArgsConstructor @Configuration public class ExecutionContextConfiguration { private final JobBuilderFacto..
SimpleJob - 개념 및 API 소개 SimpleJob spring batch가 기본적으로 제공하는 구현체 SimpleJobBuilder에 의해 생성됨 JobBuilder -> SimpleJobBuilder -> SimpleJob 생성 -> Step을 순차적으로 실행 시 SimpleJob에는 여러 요소가 있다. 각각을 살펴보자. .start 메서드를 통해 simpleJobBuilder를 반환하게 되고, simpleJob객체에다가 simpleJobBuilder 항목이 가지고 있는 설정을 하게 된다. (.incrementer, preventRestart, validator, listener 등등.....) preventRestart 실패하더라도 재시작을 못하게 하려면 preventRestart에 false라는 값을 주면 된다. (재시작 불가) ..