728x90

WEB 158

스프링 배치 이벤트 리스너 & 스프링 배치 테스트 및 운영

Spring Batch Listener 기본개념 Listener는 배치 흐름 중에 Job , Step , Chunk 단계의 실행 전후에 발생하는 이벤트를 받아 용도에 맞게 활용할 수 있도록 제공하는 인터셉터 개념의 클래스. 각 단계별로 로그기록을 남기거나 소요된 시간을 계산하거나 실행상태 정보들을 참조 및 조회 할 수 있다. 이벤트를 받기 위해서는 Listener 를 등록해야 하며 등록은 API 설정에서 각 단계별로 지정 할 수 있다. Job JobExecutionListener – Job 실행 전후 Step StepExecutionListener – Step 실행 전후 ChunkListener – Chunk 실행 전후 (Tasklet 실행 전후) , 오류 시점 ItemReadListener – Item..

WEB/Spring Batch 2023.04.04

스프링 배치 멀티 스레드 프로세싱

기본 개념 RestTempate가 실제로 실행할 로직이 들어있는 RepeatCallback 각 스레드마다 실행시키게 된다. RepeatCallback안에서 일어나는 Chunk process도 각 스레드마다 일어나게 된다. 스프링 배치 스레드 모델 기본적으로는 단일 스레드 방식으로 작업 성능 향상과 대규모 데이터 작업을 위한 비동기 처리 및 Scale out 기능을 제공한다. Local 과 Remote 처리를 지원한다. AsyncItem Processor / Writer = 별도의 스레드가 할당되어 작업을 처리하는 방식 Multi-threaded step = Step 내 Chunk 구조인 ItemReader, Processor, Writer 마다 여러 스레드가 할당되어 실행하는 방법 Remote Chunk..

WEB/Spring Batch 2023.03.30

스프링 배치 반복 및 오류 제어

Repeat Spring Batch는 얼마나 작업을 반복해야 하는지 알려 줄수 있는 기능을 제공한다. 특정 조건이 충족 될 때까지 (또는 특정 조건이 아직 충족되지 않을 때까지) Job 또는 Step 을 반복하도록 배치 애플리케이션을 구성 할 수 있다. 스프링 배치에서는 Step 의 반복과 Chunk 반복을 RepeatOperation 을 사용해서 처리하고 있다 기본 구현체로 RepeatTemplate 를 제공한다 반복 종료를 결정하는 3가지 항목 RepeatStatus 스프링 배치의 처리가 끝났는지 판별하기 위한 열거형(enum) CONTINUABLE - 작업이 남아 있음 FINISHED - 더 이상의 반복 없음 CompletionPolicy RepeatTemplate 의 iterate 메소드 안에서 ..

WEB/Spring Batch 2023.03.25

스프링 배치 청크 프로세스 활용 - ItemWriter , ItemProcessor

FlatFileItemWriter - 개념 및 API 소개 2차원 데이터(표)로 표현된 유형의 파일을 처리하는 ItemWriter 고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 기록한다 Resource 와 LineAggregator 두 가지가 요소가 필요하다 LineAggregator Item 을 받아서 String 으로 변환하여 리턴한다 FieldExtractor를 사용해서 처리할 수 있다 구현체 PassThroughLineAggregator, DelimitedLineAggregator, FormatterLineAggregator Reader에서 봤던 Tokenizer(comma기준으로 쪼개는것처럼) comma 기준으로 다시 합(aggregate) 해준다. FieldExtra..

WEB/Spring Batch 2023.03.24

스프링 배치 청크 프로세스 활용 - ItemReader

FlatFileItemReader - 개념 및 API 소개 기본개념 2차원 데이터로 표현된 유형의 파일을 처리하는 ItemReader 일반적으로 고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 읽는다. Resource 와 LineMapper 2가지 요소가 필요하다. Resource = 스프링에서 제공하는 인터페이스로 FileSystemResource , ClassPathResource 구현체가 있다. LineMapper 파일의 라인 한줄을 Object로 변환해서 FlatFileItemReader 로 리턴한다. 단순히 문자열을 받기 때문에 문자열을 토큰화 해서 객체로 매핑하는 과정이 필요하다. LineTokenizer와 FieldSetMapper 를 사용해서 처리한다. FieldS..

WEB/Spring Batch 2023.03.23

스프링 배치 청크 프로세스 이해

Chunk 기본개념 Chunk란 여러 개의 아이템을 묶은 하나의 덩어리 , 블록을 의미함 한번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만든 후 Chunk 단위로 트랜잭션을 처리함 , 즉 Chunk 단위의 Commit 과 Rollback 이 이루어짐 일반적으로 대용량 데이터를 한번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때까지 반복해서 입출력하는데 사용됨 Chunk = ItemReader 로 읽은 하나의 아이템을 Chunk에서 정한 개수만큼 반복해서 저장하는 타입 Chunk = ItemReader로부터 전달받은 Chunk 를 참조해서 ItemProcessor에서 가공 , 필터링 한후에 ItemWriter에게 전달하는 타입 하나의 chunk가 읽고 ,가공,쓰..

WEB/Spring Batch 2023.03.22

스프링 배치 실행 - Flow

FlowJob - 개념 및 API 소개 1. 기본개념 - Step을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder에 의해 생성된다. Step이 실패하더라도 Job은 실패로 끝나지 않도록 해야하는 경우 Step이 성공했을 때 다음에 실행해야할 Step을 구분해서 실행 해야하는 경우 특정 Step은 전혀 실행되지 않게 구성 해야하는 경우 Flow 와 Job은 흐름을 구성하는데만 관여하고 실제 비지니스 로직은 Step에서 이루어진다. 내부적으로 SimpleFlow 객체를 포함하고 있으며 Job 실행시 호출한다. @Bean public Job batchJob() { return jobBuilderFactory.get("batchJob") .st..

WEB/Spring Batch 2023.03.03

스프링 배치 실행 - Step

StepBuilderFactory 1. StepBuilderFactory - StepBuilder를 생성하는 팩토리 클래스로서 get(String name) 메서드 제공 - StepBuilderFactory.get("stepName")으로 Step을 생성함 2. StepBuilder - Step을 구성하는 설정 조건에 따라 다섯 개의 하위 빌더 클래스를 생성하고 실제 Step 생성을 위임한다. - TaskletStepBuilder = TaskletStep을 생성하는 기본 빌더 클래스 - SimpleStepBuilder = TaskletStep을 생성하며 내부 저긍로 청크기반의 작업을 처리하는 ChunkOrientedTasklet 클래스를 생성 - PartitionStepBuilder = Partition..

WEB/Spring Batch 2023.02.28

스프링 배치 실행 - Job

배치초기화 설정 1. JobLauncherApplicationRunner - Spring Batch 작업을 시작하는 ApplicationRunner로서 BatchAutoConfiguration에서 생성 - ApplicationRunner의 구현체임으로 spring boot가 정상적으로 구동되자마자 실행됨 - 기본적으로 빈으로 등록된 모든 Job들을 실행시킨다. 2. BatchProperties - Spring Batch의 환경설정 클래스 - Job 이름 , 스키 초기화 설정, 테이블의 prefix 등을 설정할 수 있다. - application.properties or application.yml 파일에 설정함 spring batch: jdbc: initialize-schema: always 3. Job..

WEB/Spring Batch 2023.02.23

스프링 배치 도메인 이해

JOB 배치 계층 구조에서 가장 상위 개념으로서 하나의 배치작업 자체를 의미함 api 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치 = JOB Job Configuration 을 통해 생성되는 객체 단위로서 배치작업을 어떻게 구성하고 실행할 것인지 전체적으로 설명하고 명세해 놓은 객체 배치 Job 을 구성하기 위한 최상위 인터페이스를 스프링이 기본적인 구현체를 제공한다. 여러 Step을 포함하고 있는 컨테이너로서 반드시 한 개이상의 step 으로 구성 된다. 기본 구현체 SimpleJob = 순차적으로 step 을 실행시키는 job , 모든 job에서 유용하게 쓸수 있는 표준 기술을 가지고 있다. FlowJob = 특정한 조건과 흐름에 따라 step을 구성하여 실행시키는 job, flow 객체를 실..

WEB/Spring Batch 2023.02.17
728x90