Study/Spring Batch
-
스프링 배치 실행 -FlowJob start() / next()Study/Spring Batch 2024. 4. 30. 00:00
1) start(), next()@Beanpublic Job batchJob() { return jobBuilderFactory.get("batchJob") .start(flowA()) // 처음 실행할 Flow 설정. // Flow가 인자로 오면 JobFlowBuilder 반환 // Step이 인자로 오면 SimpleJobBuilder 반환. on 메서드를 통해 JobFlowBuilder를 반환할 수 있음. .next(step3()) // next 메서드의 인자로 Step, Flow, JobExecutionDecider가 올 수 있다. .end() .build(..
-
스프링 배치 실행 -FlowJob 개념 및 APIStudy/Spring Batch 2024. 4. 29. 23:20
1) 기본 개념Step 을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder 에 의해 생성된다.Step 이 실패 하더라도 Job 은 실패로 끝나지 않도록 해야 하는 경우Step 이 성공 했을 때 다음에 실행해야 할 Step 을 구분해서 실행 해야 하는경우특정 Step은 전혀 실행되지 않게 구성 해야 하는 경우Flow 와 Job 의 흐름을 구성하는데만 관여하고 실제 비즈니스 로직은 Step 에서 이루어진다내부적으로 SimpleFlow 객체를 포함하고 있으며 Job 실행 시 호출한다 2) SimpleJob vs FlowJobSimpleJobFlowJob순차적 흐름조건적 흐름Step A 가 가장 먼저 실행Step A 가 실패 하면 전체 Job ..
-
스프링 배치 실행 -JobStepStudy/Spring Batch 2024. 4. 23. 00:37
1) 기본 개념 Job 에 속하는 Step 중 외부의 Job 을 포함하고 있는 Step. 외부의 Job 이 실패하면 해당 Step 이 실패하므로 결국 최종 기본 Job 도 실패한다. 모든 메타데이터는 기본 Job 과 외부 Job 별로 각각 저장된다. 커다란 시스템을 작은 모듈로 쪼개고 job의 흐름를 관리하고자 할 때 사용할 수 있다 2) StepBuilderFactory > StepBuilder > JobStepBuilder > JobStep @RequiredArgsConstructor @Configuration public class JobStepConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBu..
-
스프링 배치 실행 -tasklet(), startLimit()/allowStartIfComplete()Study/Spring Batch 2024. 4. 22. 22:47
1. tasklet() 1) 기본개념 Tasklet 타입의 클래스를 설정한다. Step 내에서 구성되고 실행되는 도메인 객체로서 주로 단일 태스크를 수행하기위한 것. TaskletStep 에 의해 반복적으로 수행되며 반환값에 따라 계속 수행 혹은 종료한다. RepeatStatus - Tasklet 의 반복 여부 상태 값 RepeatStatus.FINISHED - Tasklet 종료, RepeatStatus 을 null 로 반환하면 RepeatStatus.FINISHED로 해석됨. RepeatStatus.CONTINUABLE - Tasklet 반복. RepeatStatus.FINISHED가 리턴되거나 실패 예외가 던져지기 전까지 TaskletStep 에 의해 while 문 안에서 반복적으로 호출됨. (무한..
-
스프링 배치 실행 -TaskletStep 개념 및 API 소개Study/Spring Batch 2024. 4. 16. 08:10
1) 기본 개념 스프링 배치에서 제공하는 Step의 구현체로서 Tasklet을 실행시키는 도메인 객체. RepeatTemplate(반복하는 기능을 가진 클래스)을 사용해서 Tasklet의 구문을 트랜잭션 경계 내에서 반복해서 실행함. Task 기반과 Chunk 기반으로 나누어서 Tasklet을 실행함. 2) Task vs Chunk 기반 비교 스프링 배치에서 Step의 실행 단위는 크게 2가지로 나누어짐 Chunk 기반 하나의 큰 덩어리를 n개씩 나눠서 실행한다는 의미로 대량 처리를 하는 경우 효과적으로 설계 됨. ItemReader, ItemProcessor, ItemWriter 를 사용하며 청크 기반 전용 Tasklet 인 ChunkOrientedTasklet 구현체가 제공된다. Task 기반 Ite..
-
스프링 배치 실행 -StepBuilderFactoryStudy/Spring Batch 2024. 4. 15. 23:56
1) StepBuilderFactory StepBuilder를 생성하는 팩토리 클래스로서 get(String name)메서드를 제공 StepBuilderFactory.get("stepName") "stepName"으로 Step을 생성 2) StepBuilder Step을 구성하는 설정 조건에 따라 다섯 개의 하위 빌더 클래스를 생성하고 실제 Step 생성을 위임한다. TaskletStepBuilder TaskletStep을 생성하는 기본 빌더 클래스 SimpleStepBuilder TaskletStep을 생성하며 내부적으로 청크 기반의 작업을 처리하는 ChunkOrientedTasklet 클래스를 생성한다. PartitionStepBuilder PartitionStep을 생성하며 멀티 스레드 방식으로 J..
-
스프링 배치 실행 -SimpleJob 아키텍처Study/Spring Batch 2024. 4. 15. 23:22
1) SimpleJob 흐름도 2) 클래스 상속 관계도 3) SimpleJob 흐름도 따라가보기 3-1) SimpleJobLauncher.java JobExecution lastExecution = jobRepository.getLastJobExecution(job.getName(), jobParameters); 마지막에 수행됐던 JobExecution 객체를 가져온다. 3-2) SimpleJobRepository.java public JobExecution getLastJobExecution(String jobName, JobParameters jobParameters) { JobInstance jobInstance = jobInstanceDao.getJobInstance(jobName, jobPara..