TaskLetStep의 StartLimit TaskLetStep의 StartLimit은 해당 Step이 실행할 수 있는 최대 횟수를 설정하는 것이다. Step은 기본적으로 실패할 경우 다시 실행할 수 있다. 또한 StartAllow 메서드를 이용해서 성공한 Step도 항상 재실행하도록 설정할 수 있다. TaskLetStep의 StartLimit는 이처럼 새로 시작할 수 있는 Step의 최대 실행횟수를 설정하는 것이다. @Bean public Step step1() { return stepBuilderFactory.get("step1") .tasklet((contribution, chunkContext) -> { System.out.println(">>> step1 has executed"); return..
Spring Batch, TaskletStep이란? TaskLetStep은 내부적으로 TaskLet을 가지는 객체다. TaskLet은 실제 일을 하는 객체이며, 쓰레드의 Runnable 인터페이스와 유사한 역할을 한다. TaskLetStep은 또 내부적으로 RepetableTemplate 객체를 가지는데, 이 객체를 통해 TaskLet을 기본적으로는 무한대로 반복하는 형태의 동작을 한다. TaskLetStep은 TaskLet 기반도 가능하지만, Chunk를 기반으로 가능하다. TaskLetStep은 기본적으로 무한히 반복하는 형태로 동작을 하는데, 단 한번만 동작하기 위해서는 TaskLet 객체를 반환할 때 RepeatStatus.Finished / null값을 반환하면 단 한번만 반복한다. TaskLe..
StepBuilderFactory Job을 만들기 위해서 JobbuilderFactory를 사용했었다. 이것과 마찬가지로 Step을 만들기 위해서는 StepBuilderFactory를 이용해야한다. 이번 포스팅에서는 StepBuilderFactory가 어떤 형식으로 어떤 Job을 만들어내는지 간단하게 정리하려고 한다. StepBuilderFactory의 객체 생성 StepBuilderFactory에서 get() 메서드를 이용하면 StepBuilder를 반환해준다. StepBuilder는 어떤 메서드를 사용하고, 어떤 메서드를 사용하는지에 따라 여러 종류의 하위 StepBuilder를 반환해준다. 그리고 이 하위 StepBuilder를 이용해서 Step을 만들게 된다. 메서드 생성 Builder taskl..
SImpleJob Incrementer 동일한 SimpleJob을 실행하기 위해서는 전달되는 JobParameters가 달라야 한다. JobParameters를 매번 다르게 주는 방법도 있지만, SimpleJobBuilder에서 제공하는 incrementer() 메서드를 이용하면 손쉽게 다른 JobParameters를 전달해서 동일한 Job을 계속 실행할 수 있다. SimpleJob Incrementer JobParameters에서 필요한 값을 증가시켜 다음에 사용될 JobParameters 객체를 반환함. 기존의 JobParameter의 변경없이 여러번 Job을 실행할 때 사용 RunIdIncrementer를 제공함. JobParametersIncrementer 인터페이스를 구현해서 사용할 수도 있음...
SimpleJob의 구조도 이번 포스팅에서는 SimpelJob이 어떻게 실행되고, 실행되는 과정에서 어떤 것이 생성되고 반환되는지를 구조와 코드로 한번 파악을 해보고자 한다. SimpleJob의 구조도 확인 SimpelJob이 실행되는 과정과 만들어지는 값들을 순서대로 정리를 해보고자 한다. SimpleJobLauncher는 SimpleJob, JobParameters를 전달받아 Job을 실행한다. Job이 실행되기 전, SimpleJobLauncher는 JobExecution, JobInstance, ExecutionContext를 만들어둔다. 이 때, BatchStatus.Started 설정해준다. SimpleJob은 실행 전 JobListner의 Before 메서드와 관련된 것이 있다면 수행한다. ..