spring batch
-
29. 리스너 (Listener)BackEnd/Spring Batch 2022. 1. 13. 22:20
Listener는 배치 흐름 중에 Job, Step, Chunk 단계의 실행 전후에 발생하는 이벤트를 받아 용도에 맞게 활용할 수 있도록 제공하는 인터셉터 개념의 클래스입니다. 각 단계별로 로그를 기록하거나 소요된 시간을 계산하거나 실행상태 정보들을 참조 및 조회할 수 있습니다. 이벤트를 받기 위해서는 Listener를 등록해야 하며 등록은 API 설정에서 각 단계별로 지정할 수 있습니다. Listeners JobExecutionListener: Job 실행 전후 StepExecutionListener: Step 실행 전후 ChunkListener: Chunk 실행 전후 (Tasklet 실행 전후), 오류 시점 ItemReadListener: ItemReader 실행 전후, 오류 시점, item이 nul..
-
26. RetryBackEnd/Spring Batch 2022. 1. 7. 20:13
Retry는 ItemProcess, ItemWriter에서 설정된 Exception이 발생했을 경우, 지정한 정책에 따라 데이터 처리를 재시도하는 기능입니다. 오류 발생 시 Chunk 단계의 처음부터 다시 시작하며, ItemReader에서 캐시로 저장한 값을 사용합니다. Retry 기능은 내부적으로 RetryPolicy를 통해 구현되어 있으며, Retry 가능 여부를 판별하는 기준은 다음과 같습니다. 1. 재시도 대상에 포함된 예외인지 여부 (retryableException) 2. 재시도 카운터를 초과 했는지 여부 (retryCount > retryLimit) RetryPolicy 재시도 정책에 따라 아이템의 retry 여부를 판단하는 클래스입니다. 기본적으로 제공하는 RetryPolicy 구현체들이 ..
-
25. SkipBackEnd/Spring Batch 2022. 1. 6. 21:48
Skip은 데이터를 처리하는 동안 설정된 Exception이 발생했을 경우, 해당 데이터 처리를 건너뛰는 기능입니다. ItemReader: 예외가 발생하면 해당 아이템만 스킵하고 계속 진행 ItemProcessor, ItemWriter: 예외가 발생하면 Chunk의 처음으로 돌아가서 스킵된 아이템을 제외한 나머지 아이템들을 가지고 처리 Skip 기능은 내부적으로 SkipPolicy를 통해서 구현되어 있으며, Skip 가능 여부 판단 기준은 아래와 같습니다. 1. 스킵 대상에 포함된 예외인지 여부 (skippableException) 2. 스킵 카운터를 초과 했는지 여부 (skipCount > skipLimit, skipCount는 ItemReader, ItemProcessor, ItemWriter 합) ..
-
24. FaultTolerantBackEnd/Spring Batch 2022. 1. 4. 22:50
Spring Batch는 Job 실행 중에 오류가 발생할 경우 장애를 처리하기 위한 기능을 제공하며 이를 통해 복원력을 향상시킬 수 있습니다. 오류가 발생해도 Step이 즉시 종료되지 않고 Retry 혹은 Skip 기능을 활성화 함으로써 내결함성 서비스가 가능하도록 합니다. FaultTolerant 구조는 청크 기반의 프로세스 기반 위에 Skip과 Retry 기능이 추가되어 재정의 되어 있습니다. Skip: ItemReader / ItemProcessor / ItemWriter에 적용할 수 있습니다. Retry: ItemProcessor / ItemWriter에 적용할 수 있습니다. API package io.springbatch.springbatchlecture; import lombok.Require..
-
23. RepeatBackEnd/Spring Batch 2022. 1. 4. 22:35
Spring Batch는 특정 조건이 충족될 때까지 (또는 특정 조건이 아직 충족되지 않을 때까지) Job 또는 Step을 반복하도록 배치 애플리케이션을 구성할 수 있습니다. Spring Batch에서는 Step의 반복과 Chunk 반복을 RepeatOperation을 사용해서 처리하며, 기본 구현체로 RepeatTemplate를 제공합니다. 반복을 종료할 것인지 여부를 결정하는 세가지 항목 RepeatStatus 스프링 배치의 처리가 끝났는지 판별하기 위한 열거형(enum) CONTINUABLE: 작업이 남아 있음, FINISHED: 더 이상의 반복 없음 CompletionPolicy RepeatTemplate의 iterate 메소드 안에서 반복을 중단할지 결정 실행 횟수 또는 완료시기, 오류 발생 시..
-
22. ItemProcessorBackEnd/Spring Batch 2022. 1. 4. 21:25
CompositeItemProcessor ItemProcessor들을 연결(Chaining)해서 위임하면 각 ItemProcessor를 실행시킵니다. 이전 ItemProcessor 반환 값은 다음 ItemProcessor 값으로 연결됩니다. API package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.an..
-
21. ItemWriterAdapterBackEnd/Spring Batch 2021. 12. 31. 18:45
배치 Job 안에서 이미 존재하는 DAO나 다른 서비스를 ItemWriter 안에서 사용하고자 할 때 위임 역할을 합니다. setTargetObject에 존재하는 서비스를 setTargetMethod에 호출하려는 메서드명을 적용합니다. package io.springbatch.springbatchlecture; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotatio..