| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 스프링배치 엑셀
- spring batch 5
- 마이바티스 트랜잭션
- step 값 공유
- Spring Batch
- 스프링배치 메타테이블
- 수직 스케일업
- aop proxy
- 스프링 배치 파티셔닝
- 아이템 리더 커스텀
- api 아이템 리더
- step 여러개
- executioncontext
- step 사이 변수 공유
- 선언적 트랜잭션 관리
- 읽기 작업과 쓰기 작업 분리
- abstractpagingitemreader
- JSONArray 분할
- executioncontext 변수 공유
- 스프링 배치 5
- flatfileitemwriter
- 스프링 트랜잭션 관리
- 스프링배치 csv
- job parameter
- stepexecutionlistener
- spring batch 변수 공유
- 아이템 리더 페이징 처리
- 트랜잭션 분리
- mybatis
- multi threading
- Today
- Total
목록전체 글 (206)
ebson
스프링 배치 라이브러리에서는 배치잡 실행 중 발생하는 예외 상황에 대하여 스킵하거나 잡을 재시작하는 기능을 제공한다. 각 기능의 특징과 상세를 분석하고 실무 사례에 적합한 기능을 활용할 수 있다. 1. 기본 예외 처리 구조1.1 FaultTolerant Step 구성스프링 배치에서 예외 처리를 위해서는 Step에서 faultTolerant() 메서드를 사용하여 내결함성을 활성화해야 한다.@Beanpublic Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) { return new StepBuilder("step1", jobRepository) .chunk(100, transacti..
1. @JobScope, @StepScope란? 1.1. @JobScope 정의:Spring Batch에서 Job 실행 시점에 Bean의 라이프사이클을 맞추기 위해 사용하는 어노테이션.해당 Bean은 Job이 시작될 때 생성되고, Job이 끝나면 소멸됨.주요 용도:JobParameter를 주입받아야 하는 Bean(예: JobParameter를 사용하는 Step, Parameter 객체 등)에 사용.Job 실행마다 새로운 인스턴스가 필요할 때 사용.1.2. @StepScope 정의:Step 실행 시점에 Bean의 라이프사이클을 맞추기 위해 사용하는 어노테이션.해당 Bean은 Step이 시작될 때 생성되고, Step이 끝나면 소멸됨.주요 용도:StepExecutionContext 또는 JobParameter..
스프링 배치 라이브러리에서는 MyBatis를 사용해 DB 데이터를 타게팅하는 실무 사례를 지원하기 위해서, 다양한 Item Reader 클래스를 제공한다. 각 클래스별로 특징과 장단점을 분석하고 실무 사례에 가장 적합한 클래스를 사용할 수 있다. 1. MyBatisPagingItemReader특징Page 기반: 내부적으로 쿼리에 limit/offset(혹은 rownum 등)을 사용하여 데이터를 페이지 단위로 나눠서 조회.Spring Batch의 chunk 처리와 자연스럽게 연동됨. chunk 단위로 select 쿼리가 반복 실행됨.상태 저장: Step이 재시작될 때 마지막 읽은 페이지부터 이어서 처리 가능.장점대용량 데이터 처리에 적합: 한 번에 모든 데이터를 메모리에 올리지 않고, chunk 단위로 반..
org.springframework.batch.core.partition.support.Partitioner를 implements한 구현체를 작성하여 다양한 데이터 소스로부터 목적에 맞는 전용 파티셔너를 사용할 수 있습니다. 파티션 대상이 되는 데이터소스와 파티션 시 정렬 기준 및 보다 정밀한 제어가 필요한 파티셔닝 전략을 직접 구현할 수 있습니다. CASE1. 외부 API 호출1. 실무 사례 출고 송장과 출고 상품목록 등록 병렬처리 배치잡 2. 적요 HTTP Client를 사용해 API 호출한 결과 items를 파티셔닝할 수 있다.2.1. API 호출 결과 수집 2.2. API 호출 결과 items 카운팅 2.2.1. 카운팅 결과 items가 없으면 dummy 파티션을 생성2.2.2. 카운팅 결과 ..
Spring Batch Partitioning 기술 설명1. Partitioning이란?파티셔닝(Partitioning)은 대용량 데이터를 여러 파티션(조각)으로 나누어, 각 파티션을 별도의 스레드에서 병렬로 처리하는 Spring Batch의 확장성(Scalability) 기술입니다.파티셔닝(Partitioning)은 하나의 Step을 여러 개의 파티션(작은 단위)으로 나누어, 각 파티션을 병렬로 실행하는 방식입니다.각 파티션은 독립적으로 데이터를 읽고(chunk 단위), 처리(Writer)합니다.각 파티션은 독립적으로 ItemReader, ItemProcessor, ItemWriter를 실행하며, 데이터의 일부분만 처리합니다.병렬 처리는 멀티스레드(TaskExecutor) 또는 멀티프로세스(Remote..
Spring Boot 의 Transaction 관리 Spring Boot에서는 Transaction 관리를 위해 TransactionManager 인터페이스와 이를 확장한 다양한 종류의 인터페이스 및 구현체들을 제공한다. TransactionManager를 사용하는 일반적인 방법은 Transaction 단위의 메서드에 @Transactional 어노테이션을 적용하는 것인데, 어노테이션을 적용한 메서드가 호출되면 트랜잭션을 생성하고 메서드가 종료하면 commit, 예외가 발생하면 rollback한다. package org.springframework.transaction;import org.springframework.lang.Nullable;public interface PlatformTransacti..
Spring Batch 에서 Step 개발 Spring Batch를 사용한 Batch Application에서 대부분의 경우에는 단일 Step으로 요구사항을 충족할 수 있다. 그러나 비즈니스 로직을 분리하면서 모듈화하고 가독성을 향상하거나, 큰 작업을 작은 작업들로 나누면서 재사용성을 향상하려는 경우, 또는 필요에 따라 새로운 Step을 추가하고 제거, 순서 변경하는 등 유연성과 확장성을 가지려는 경우에 여러 Step으로 Job을 구성할 수 있다. 여러 Step으로 Job을 구성하고 개발하다보면 Step 사이에 변수를 공유해야 하는 경우가 생긴다. 다른 스텝에서의 계산 결과나 데이터베이스 쿼리 결과, API 호출 결과를 사용하거나, 앞선 스텝의 결과 값으로 조건 분기 처리하여 다음 스텝을 결정해야 하는 ..
Spring Batch Application에서 사용할 수 있는 데이터소스들 대부분의 경우 Spring Batch를 사용한 배치 어플리케이션에서는 데이터소스로 RDBMS를 연동해 사용하기 때문에, MyBatis와 JPA를 사용할 수 있으면 된다. 직접 MyBatis와 JPA를 사용하는 코드를 작성할 수도 있고 Spring Batch가 제공하는 전용 Item Reader 클래스와 Item Writer 클래스를 사용할 수도 있다. ex) MyBatisCursorItemReader, MyBatisPagingItemReader, MybatisBatchItemWirter, JpaPagingItemReader, JpaItemWriter ... 그러나 배치 어플리케이션의 읽기 데이터소스가 항상 MyBatis와 ..