Spring Batch 13

Spring Batch 도메인 ExecutionContext

기본 개념 프레임워크에서 유지 및 관리하는 “키 / 값”으로 된 컬렉션으로 StepExecution 또는 JobExecution 객체의 상태(state)를 저장하는 공유 객체 DB 에 직렬화 한 값으로 저장됨 {”key” : “value”} 공유 범위 Step 범위 = 각 Step의 StepExecution에 저장되며 Step 간 서로 공유 안됨 Job 범위 = 각 Job의 JobExecution에 저장되며 Job 간 서로 공유 안되며 해당 Job의 Step 간 서로 공유됨 Job 재 시작 시 이미 처리한 Row 데이터는 건너뛰고 이후로 수행하도록 할 때 상태 정보를 활용한다. 구조 ExecutionContext Map map = new ConcurrentHashMap 유지 , 관리에 필요한 키값 설정 ..

Spring Batch 2022.08.30

Spring Batch 도메인 StepExecution

기본개념 Step에 대한 한 번의 시도를 의미하는 객체로서 Step 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간 , 종료시간 , 상태(시작됨 , 완료 , 실패) , commit count , rollback count 등의 속성을 가짐 Step 이 매번 시도될 때마다 생성되며 각 Step 별로 생성된다 Step 별로 생성된 StepExecution 끼리는 공유가 안된다 Job 이 재시작 하더라도 이미 성공적으로 완료된 Step 은 재 실행되지 않고 실패한 Step 만 실행된다 이전 단계 Step 이 실패해서 현재 Step을 실행하지 않았다면 StepExecution을 생성하지 않는다. Step 이 실제로 시작됐을 때만 StepExcution을 생성한다 JobExecution 과의 관계 Step..

Spring Batch 2022.08.24

Spring Batch 도메인 Step

기본 개념 Batch job을 구성하는 독립적인 하나의 단계로서 실제 배치 처리를 정의하고 컨트롤하는 데 필요한 모든 정보를 가지고 있는 도메인 객체 단순한 단일 태스크 뿐 아니라 입력과 처리 그리고 출력과 관련된 복잡한 비즈니스 로직을 포함하는 모든 설정들을 담고 있다. 배치작업을 어떻게 구성하고 실행할 것인지 Job의 세부 작업을 Task 기반으로 설정하고 명세해 놓은 객체 모든 Job은 하나 이상의 step으로 구성됨 기본 구현체 TaskletStep 가장 기본이 되는 클래스로서 Tasklet 타입의 구현체들을 제어한다 PartitionStep 멀티 스레드 방식으로 Step 을 여러 개로 분리해서 실행한다 JobStep step 내에서 Job 을 실행하도록 한다 FlowStep Step 내에서 Fl..

Spring Batch 2022.08.23

Spring Batch 도메인 JobExecution

기본개념 Joblstance 에 대한 한번의 시도를 의미하는 객체로서 Job 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간 , 종료시간 , 상태(시작됨 , 완료 , 실패) , 종료상태의 속성을 가짐 JobExecution 은 JobIstance 가 실행 될 때마다 생성이 된다 Joblstance 와의 관계 JobExecution 은 ‘FALED’ 또는 ‘COMPLETED’ 등의 Job 의 실행 결과 상태를 가지고 있음 JobExecution 의 실행 상태 결과가 ‘COMPLETED’ 면 JobInstance 실행이 완료된 것으로 간주해서 재 실행이 불가함 JobExecution 의 실행 상태 결과가 ‘FALED’면 JobInstance 실행이 완료되지 않은 것으로 간주해서 재실행이 가능함 Job..

Spring Batch 2022.08.22

Spring Batch 도메인 JobParameters

기본 개념 Job을 실행항 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도 하나의 Job에 여러개의 JobInstance 있다는 것은 Job은 하나이지만 JobParameters가 여러개라는 의미이다. JobParameters와 JobInstance는 1:1 관계 BATCH_JOB_EXECUTION_PARAM 테이블과 매핑 JOB_EXECUTION 과 1:M 의 관계 JobParameters 구조 JobParameters JobParameter 를 감싸고 있는 Wrapper 클래스 이다 맵으로 Key , 값 으로 데이터가 저장된다 JobParameter JobParameters 가 내부적으로 가지고 있는 JobPa..

Spring Batch 2022.08.19

Spring Batch 도메인 Joblnstance

Joblnstance 기본 개념 Job 이 실행될 때 생성되는 Job의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타낸다 Job 의Job의 설정과 구성은 동일하지만 Job 이 실행되는 시점에 처리하는 내용은 다르기 때문에 Job의 실행을 구분해야 함 예를 들어 하루에 한 번 씩 배치 Job이 실행된다면 매일 실행되는 각각의 Job을 JobInstance 로 표현합니다 Joblnstance 생성 및 실행 ⭐처음 시작하는 Job+JobParameter 일 경우 새로운 Joblnstance 생성 ⭐⭐이전과 동일한 Job+JobParameter으로 실행할 경우 이미 존재하는 JobInstance 리턴 내부적으로 JobName + jobKey(JobParameter 의 해시값)를 가지고 Job..

Spring Batch 2022.08.19

Spring Batch 도메인 Job

Job Job 이 구동될 때 실행에 관련된 메타데이터를 생성해서 저장한다 Job 은 하나의 설계도 같은 역할을 한다 최상위 인터페이스 Joblnstance , JobParameters , JobExecution 이런 클래스들은 실제 메타데이터들을 저장할 때 사용되는 클래스 Spring Batch 에서 제공하는 기본 구현제 SimpleJob FlowJob 순차적으로 Step 을 실행시키는 Job 특정한 조건과 흐름에 따라 Step 을 구성하여 실핼시키는 Job 모든 Job에서 유용하게 사용할 수 있는 표준 기능을 갖고 있음 Flow 객체를 실행시켜서 작업을 진행함

Spring Batch 2022.08.19

Spring Batch 테이블 의미

🎈Job 관련 테이블 BATCH JOB INSTANCE job 이 실행될 때 JobInstance 정보가 저장되며 job_name과 job_key를 키로 하여 하나의 데이터가 저장 동일한 job_name과 job_key로 중복 저장될 수 없다 JOB_INSTANCE_ID 고유하게 식별할 수 있는 기본 키 VERSION 업데이트 될 때 마다 1씩 증가 JOB_NAME job을 구성할 때 부여하는 job 의 이름 JOB_KEY job_name 과 jobParameter 를 합쳐 해상한 값을 저장 BATCH_JOB_EXEXUTION job 의job의 실행정보가 저장되며 job 생성 , 시작 , 종료 시간 , 실행상태 , 메시지 등을 관리 JOB_EXECUTION_ID jobExecution 을 고유하게 식별할..

Spring Batch 2022.08.18

Spring Batch의 기본 구조와 DB 연결

👉설정 Maven & yml 기준 다중 연결한 DB = h2 , mariadb ------------------------------------------------------------------------------------------------------------------------------------------------ Batch의 기본 구조를 만들어보기 전에 DB를 먼저 연결해주었다. 이왕 연결해주는거 yml에 다중 DB 연결을 연습해보려 2개를 연결했습니다. h2 Maven 설정 com.h2database h2 runtime mariadb Maven 설정 org.mariadb.jdbc mariadb-java-client 3.0.7 yml에 다중 DB 설정하기 spring: profil..

Spring Batch 2022.08.17