dev.Log
Spring Batch 본문
- 배치 애플리케이션이란?
배치 처리는 컴퓨터에서 사람과 상호작용없이 이어지는 프로그램들의 실행이다. (요청 응답이 반복되는 웹 실행방식과 다름)
웹 - 실시간 처리 / 상대적인 속도 / QA 용이성
배치 - 후속처리 / 절대적인 속도 / QA 복잡성
- Spring Batch와 Quartz
Quartz는 스케줄링 프레임워크이다. Quartz는 Spring Batch의 보안제 역할이지 대체제가 아니다.
- 배치 애플리케이션이 필요한 상황
- 일정 주기로 실행되어야 할 때
- 실시간 처리가 어려운 대량의 데이터를 처리할 때
- 스프링 배치에서는 모든 데이터를 메모리에 쌓지 않는 조회 방식이 기본 방식이다.
- Job / Step / Tasklet
- Tasklet이라는 인터페이스의 구현체인 ChunkOrientedTasklet
- JobParameter : SpringBatch는 외부에서 파라미터를 주입받아 Batch 컴포넌트에서 사용할 수 있다.
사용법 : @Value("#{jobParameters[파라미터명]}") 타입이름
@JobScope
@StepScope
* Spring Batch의 JobParameter는 Long/ String/ Double/ Date 타입들을 모두 지원한다.
Enum / LocalDate / LocalDateTime 은 지원안된다. (요즘은 Date 안쓰는 추세니까...)
그래서 매번 형변환을 하게 되는데...
=> 해결방법
1. JobParameter에 setter 메소드를 생성.
@JobScope와 @StepScope는 Late Biniding(늦은 할당)이다.
애플리케이션 실행 시점이아니라 @JobScope는 Job 실행시점에 Bean이 생성되고, @StepScope는 Step 실행시점에 Bean이 생성된다.
* 애플리케이션 실행 후에도 동적으로 reader/ processor/ writer bean 생성이 가능하다.
-> JobParameter값에 따라 Reader와 Processor를 교체가능하다.
'BACKEND.*' 카테고리의 다른 글
인증과 인가 (0) | 2022.09.30 |
---|---|
Spring Batch의 스케일링 (0) | 2022.09.29 |
Kafka Producer (0) | 2022.09.29 |
Kafka (0) | 2022.09.28 |
addBatch (0) | 2022.09.15 |