이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

Spring/Spring Batch

  • 시간의화살
[Spring Batch] Chunk 아키텍처

[Spring Batch] Chunk 아키텍처

2024.08.24
단일 Task 기반 처리로도 배치 작업을 수행할 수 있지만, Chunk 단위로 묶어서 배치 작업을 처리하면 여러 측면에서 이점을 얻을 수 있다.      ItemReader가 설정된 Chunk 사이즈만큼 데이터를 읽고, ItemProcessor가 처리 작업을 수행한 후 ItemWriter가 기록하는 구조이다.ItemReader는 한 번에 하나의 아이템을 읽고 읽은 아이템은 Chunk의 일부로 저장된다.지정된 사이즈에 도달하면 ItemProcessor를 통해 비즈니스 로직을 적용하고, ItemWriter에게 넘겨 한 번에 기록한다. 트랜잭션은 Chunk 단위로 묶어서 처리돼 실패한 Chunk 단위로 재시도 로직을 적용할 수 있다.   @Bean @JobScope public Step ste..
[Spring Batch] Flow 아키텍처

[Spring Batch] Flow 아키텍처

2024.07.21
FlowJob은 FlowJobBuilder가 생성하고, Step을 특정 상태에 따라 흐름을 전환하도록 구성할 때 사용한다. (Step이 실패하더라도 Job은 성공하도록 설정하거나, Step이 성공한 후 다음 Step을 구분해서 실행하는 경우)  기존 SimpleJob은 순차적으로 Step을 수행했다면 FlowJob은 동적으로 Step을 제어한다.   @Bean public Job job() { return new JobBuilder("job", jobRepository) .start(step1()) .on("COMPLETED").to(step3()) .from(step1()) .on("FAILED").t..
[Spring Batch] Job / Step 아키텍처

[Spring Batch] Job / Step 아키텍처

2024.07.07
스프링배치 5 버전부터는 JobBuilderFactory와 StepBuilderFactory등 Factory 클래스가 Deprecate 됐고 Builder를 직접 사용하는 방식으로 변경됐다.  JobRepository와 TransactionManager를 Builder에 직접 주입받아 설정을 좀 더 편하게 할 수 있다. JobBuilder는 실제 Job의 생성을 위임한다.  // JobBuilderpublic class JobBuilder extends JobBuilderHelper { @Deprecated(since = "5.0", forRemoval = true) public JobBuilder(String name) { super(name); } public JobBuilder(String nam..
[Spring Batch] 배치 도메인 이해

[Spring Batch] 배치 도메인 이해

2024.06.30
@SpringBootApplication@EnableBatchProcessing(dataSourceRef = "batchDataSource", transactionManagerRef = "batchTransactionManager")public class SpringBatchMasterApplication { public static void main(String[] args) { SpringApplication.run(SpringBatchMasterApplication.class, args); }}  스프링 배치 애플리케이션을 활성화하려면 @EnableBatchProcessing 애너테이션을 메인 클래스 위에 붙여줘야 한다. 애너테이션은 4개의 설정 클래스를 실행시켜 스프링 배치 초기 설정과 초기화를..
[Spring Batch] ItemReader / ItemWriter

[Spring Batch] ItemReader / ItemWriter

2024.02.27
Step에서 데이터를 읽어오는 역할을 담당하는 ItemReader를 구현할 때는 개발자가 직접 ItemReader 인터페이스를 구현해 read 메서드를 구현한 후 Step에 추가할 수도 있고, 스프링 배치가 기본적으로 제공하는 ItemReader를 사용할 수도 있다. @Bean @StepScope public FlatFileItemReader flatFileItemReader( @Value("#{jobParameters['inputFile']}") FileSystemResource fileSystemResource ) { FlatFileItemReader flatFileItemReader = new FlatFileItemReader(); // flatFileItemReader.setResource(new..
[Spring Batch] 스프링 배치 내부 흐름

[Spring Batch] 스프링 배치 내부 흐름

2024.02.25
스프링 배치는 대용량 데이터를 효율적으로 처리하기 위해 설계된 프레임워크이다. 1. Chunk 단위로 나눠서 작업 데이터를 일정량의 Chunk 단위로 묶어서 처리한다. 각 Chunk는 여러 Item으로 구성되고 배치 작업은 Item을 하나씩 읽고 처리한 후 모든 Item이 처리되면 결과를 갱신한다. 대량의 데이터를 한 번에 처리할 때 발생할 수 있는 메모리 부하를 줄이고 로직 수행 중 오류가 발생한 경우 유연하게 복구할 수 있다. 2. 예외처리 스프링 배치는 Job을 여러 Step으로 구성하는 방식으로 사용한다. Step은 독립적인 작업 단위로, 특정 Step에서 예외가 발생했을 때 그 Step에 대해서만 예외를 처리할 수 있어 유연하다. 3. 트랜잭션 각 Chunk 처리 과정에서 트랜잭션을 시작하고 처..
  • 최신
    • 1
  • 다음

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (614)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Logs (6)
    • 낙서장 (26)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바