회사 내에서 프로젝트 중 여러 쇼핑몰의 구매확정 처리를 일괄처리해야하는 작업이 기존에는 스케줄러로 작성되어 있었다. 하지만 이런 구조를 갖게 되었을 때 서버 하나에 너무 큰 부하가 될까 우려되어 일괄 처리하는 작업은 외부로 빼서 작업을 진행할 수 없을까 고민하던 중 S
👊 Spring Boot로 시작 spring initializr에서 Spring Boot 프로젝트를 먼저 생성한다. 우선 회사의 현재 환경에 맞춰서 생성해야 하므로 Batch Quartz (=스케줄러) Lombok MyBatis H2 (= 테스트용) MySQL
지금까지 공부한 내용의 코드를 보면 Job 내부에 Step을 구성하고 Step 내부에 실제 비지니스 로직이 구현되어 있다. 그렇다면 Job 내부에서 Step을 어떻게 관리하는지 알아보자.StepNextJobConfiguration.java 파일을 job 내에 추가해주자
Batch의 Scope는 @StepScope, @JobScope가 있고 요청에 대한 파라미터를 받을 수 있는 Job Parameter에 대해 공부해보자.Batch는 외부 혹은 내부에서 파라미터를 받아 여러 Batch 컴포넌트에서 사용할 수 있게 지원하고 있다. 하지만
청크란 작업할 데이터의 각 커밋 사이에 처리되는 row의 수를 의미한다. 즉 Chunk 지향 처리란 한번에 읽어오는 Chunk라는 덩어리를 만든 뒤, Chunk 단위로 트랜잭션을 다루는 것이다.Chunk 단위로 트랜잭션을 수행한다는 것은 Chunk의 단위로 작업이 실행
Chunk Tasklet은ItemReader를 통해 데이터 읽기ItemProcessor를 통해 서비스 로직 진행ItemWriter를 통해 일괄처리의 로직으로 진행된다. 이 중 Reader에 대해서 학습해보자.CursorItemReader는 Streaming으로 데이터를
이전 데이터에 success_state 컬럼이 추가되었고 우리는 false 상태의 거래건을 모두 가져와 true로 변경해야한다.실행해보자데이터가 내가 예상했던대로 변경된 것을 확인할 수 있다.
Test Code 세팅 지금 프로젝트에 세팅에 맞게만 설명하려고 한다. 먼저 기존의 SuccessStateJobTest.java 파일을 가지고 테스트 코드를 작성하고자 한다. 향로님 batch 가이드 batch 다중 DB 세팅
💭 왜 DB 다중화? Batch 프로젝트를 진행하면서 Batch 메타 테이블이 꼭 실제 서비스 중인 프로젝트 DB에 붙어야할까? 라는 생각을 하게 되었다. 또한 Batch의 테스트 코드 작성이 실제 DB에 직접적으로 붙는다는게 개인적으로 좋게 보이지 않았다. 그래서
출처글 querydsl paging reader thread-safe 🔨batch의 multi thread 설정 batch에서의 multi thread 환경 설정은 excutor를 사용하면 된다. job을 지정하는 곳에 다음과 같이 Bean으로 TaskExec