이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Batch : Retry Spring Batch는 Chunk 기반 Step에서 예외가 발생했을 때, 잘 동작하도록 Retry 기능을 지원해준다. 앞서 Skip 기능에 대해 정리를 했었는데, Skip 기능과 더불어 Retry 기능도 지원한다. Retry 기능은 Chunk Step을 처리하면서 Exception이 발생했을 때, 재시도를 통해서 Step이 정상적으로 성공하는 것을 도모한다. 한 가지 알아두어야 할 점은 Retry는 ItemReader에서는 지원하지 않는다. Retry는 ItemProcessor, ItemWriter에서만 지원한다. 따라서 ItemReader에서는 Skip 기능만 지원한다는 것을 잘 이해해두자. Retry의..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다 Multi-Threaded Step Multi-Threaded Step은 Chunk 기반의 멀티 쓰레드 스텝이다. Chunk 기반으로 처리를 하게 되는데, 이 때 멀티 쓰레딩 환경으로 동작하게 되면서 일반적인 Single 쓰레드 방식의 Chunk 쓰레드 방식보다 조금 더 빠르게 동작할 가능성이 있다. Chunk는 각 ItemReader / ItemProcessor / ItemWriter마다 Chunk를 새로 만들어서 전달해주는 방식 때문에 멀티 쓰레딩 환경에서 동기화를 처리하는데 좀 더 수월하게 접근할 수 있다. Multi-Threaded Step의 구성 Multi-Threaded Step은 TaskExecutorRepeatTemplate을 ..
이 글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Spring Batch : SynchronizedItemStreamReader Spring Batch는 여러 멀티 쓰레드 환경에 Chunk 흐름을 제공한다. 멀티 쓰레드 환경에서 가장 조심해야 할 부분은 각 쓰레드가 서로에 영향을 미치지 않고 동작을 해야한다는 것이다. 먼저 데이터를 전달하는 관점에서 살펴본다. 위의 이미지는 ChunkOrientedTasklet의 Provider의 Provide 메서드다. Provide 메서드는 시작하자마자 새로운 Chunk를 만드는 것을 볼 수 있다. 이것은 Input Chunk인데, Input Chunk에 값을 채워서 Processor에 넘겨주고, Processor는 또 새로운 Chunk를 만들어서 전달해준..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Step Skip → Chunk에서 사용됨. Step을 실행하다보면, 실행 중에 Exception이 발생하는 경우가 있다. 그런데 이 Step의 데이터가 중요하지 않은 경우, 예를 들어 Log를 찍는 상황이라면 무시해도 충분할 것이다. 이처럼 중요하지 않은 Step에서 Exception이 발생했을 때, 이 부분을 무시하고 실행할 수 있는 것이 Step Skip이다. Skip Step 선언 Skip Step을 선언하기 위해서는 FaultTolerantBuilder를 만들어야한다. 이것은 Chunk 상태에서만 사용할 수 있는데, Chunk를 해서 ChunkStepBuilder로 만든 후 FaultTolerant() API를 이용하면 FaultT..
이 포스팅은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. Partition Step 파티셔닝 Step은 멀티 쓰레드 환경을 이용해 보다 빠른 Batch Job 처리를 위해 스프링 배치가 지원하는 Step이다. 위의 그림으로 Partitioning Step을 이해할 수 있다. 메인 쓰레드는 Job을 실행시키고, 이 Job은 Master Step을 가진다. Master Step은 내부적으로 Slave Step을 하나 가지는데, 이 Slave Step을 멀티 쓰레드에서 분산처리 하도록 처리한다. 즉, 하나의 Slave Step이 있는데, 쓰레드 갯수만큼 Slave Step을 생성해서 동시에 처리하는 것으로 이해할 수 있다. 기본개념은 아래에서 확인할 수 있다. 기본개념 MasterStep이 Slave ..