본문 바로가기

Batch5

스프링 배치 완벽 가이드 - 6. 잡 실행하기 잡 실행하기 스프링 부트로 잡 실행하기 스프링 부트를 사용해서 스프링 배치를 실행할 때는 ApplicationRunner의 구현체인 JobLauncherCommandLineRunner가 사용된다. ApplicationRunner 인터페이스는 스프링 ApplicationContext가 준비되면 호출되는 run() 메소드를 하나 가지고 있다. 스프링 부트는 기동시 spring-boot-starter-batch가 클래스 패스에 존재하면 JobLauncherCommandLineRunner를 실행한다. JobLauncherCommandLineRunner는 JobLauncher를 사용해 컨텍스트 내에서 찾아낸 모든 잡을 실행한다. 애플리케이션 기동시 어떤 잡도 실행하지 않도록 설정할 수 있다. REST 호출이나 특.. 2021. 5. 9.
스프링 배치 완벽 가이드 - 5. JobRepository와 메타데이터 스프링 배치는 잡이 실행될 때 잡의 상태를 JobRepository에 저장해서 관리한다. 잡의 재시작 또는 아이템 재처리 시 어떤 동작을 수행할지 이 정보를 사용해 결정한다. 잡이 처리되는데 걸리는 시간, 오류로 인해 재시도된 아이템 수, 잡이 어디까지 실행됐는지 등을 기록하여 모니터링 데이터로 사용할 수 있다. Job Repository란? 스프링 배치에서 JobRepository는 인터페이스 혹은 메타데이터를 저장하는 저장소를 의미한다. 여기서는 저장소에 대해 알아본다. 스프링배치에서는 관계형 데이터베이스와 인메모리 저장소를 사용할 수 있다. 관계형 데이터베이스 사용하기 스프링 배치가 제공하는 여러 테이블을 사용해 배치 메타데이터를 저장한다. Version 대부분의 메타데이터 테이블에서 VERSION.. 2021. 5. 6.
스프링 배치 완벽 가이드 - 4. 잡과 스텝 이해하기 잡 소개하기 이 책에서 잡의 정의: "처음부터 끝까지 독립적으로 실행할 수 있는, 고유하고, 순서가 있는 스텝의 목록이다." 고유하다(unique): 잡은 자바나 XML을 사용하여 구성하며, 재사용이 가능하다. 하나의 구성으로 필요한 횟수 만큼 잡을 실행할 수 있다. 잡을 여러 번 실행하려고 동일한 잡을 여러 번 정의할 필요가 없다. 순서가 있는 스텝의 목록이다(ordered list of steps): 잡에서 스텝의 순서는 중요하다. 모든 스텝이 논리적인 순서로 실행될 수 있도록 잡을 구성한다. 처음부터 끝까지 실행 가능하다(Can be executed from start to finish): 잡은 외부와 상호작용 없이 실행할 수 있는 일련의 스텝이다. 독립적으로(independently): 각 배치 .. 2021. 5. 2.
스프링 배치 완벽 가이드 - 3. 예제 잡 애플리케이션 은행 거래명세서 잡의 요구사항 이해하기 배치 처리가 수행하는 전체 기능: 제공된 입력 파일을 기반으로 고객 정보를 갱신한다. 고객 정보가 담긴 CVS 파일이 제공된다. 이 파일을 읽어 데이터베이스의 고객 데이터(이름, 메일 주소, 연락처)를 갱신한다. 데이터베이스에 저장되어 있는 모든 고객의 거래 정보를 가져온다. 거래 정보는 XML 파일로 제공되며 기존 데이터베이스(거래 테이블)에 추가할 것이다. 계좌 테이블의 계좌 잔액을 최신으로 갱신한다. 계좌 테이블에는 잔액 필드가 있으며, 가장 최근에 가져온 모든 거래 정보를 사용해서 계산하여 갱신한다. 현재 잔액을 알고 싶을 때, 모든 거래를 처음 부터 재계산하지 않아도 된다. 지난 한 달 동안의 은행 계좌에 대해 인쇄한다. 모든 데이터베이스 갱신이 완료되면 .. 2021. 5. 2.
스프링 배치 완벽 가이드 - 2. 스프링 배치 예제코드 github.com/AcornPublishing/definitive-spring-batch 배치 아키텍처 애플리케이션 레이어: 개발자가 작성한 코드. 대부분 코어 레이어와 상호작용한다. 코어 레이어: 배치 영역을 구성하는 실제적인 컴포넌트들(Job, Step, JobLauncher, JobParameters) 인프라스트럭쳐 레이어: ItemReader, ItemWriter, Repeat Job과 Step Job은 상태를 수집하고, 이전 상태에서 다음 상태로 전환된다. State Machine. 가장 일반적인 상태의 형태는 Step이다. Step은 Job을 구성하는 작업 단위이다. Step의 유형 Tasklet 기반 Step 구조 간단 Tasklet interface를 구현한다. Step이 중지될.. 2021. 5. 1.