이 글은 인프런 정수원님의 강의를 듣고 복습하며 작성한 글입니다. Job Instance 기본개념 Job Instance는 Job이 실행될 때 만들어지는 고유한 객체임. Job name + Job Parameter의 해쉬 값을 더해서 만들어지기 때문임. Job Instance는 동일 Job name + Job Parameter에 대해서는 단 하나의 Instance만 만들어짐. 동일한 Job을 Job Parameter로 나눠서 저장하기 위한 것임. (1/1일 일별 정산, 1/2일 일병 정산 Job은 다른 Job이다) Job Instance가 있으면 기존 Job Instance를 반환(재실행), 없으면 새로 만들어 반환한다. Job과 Job Instance는 1:M 관계(Job Parameter의 영향성) ..
이 글은 인프런 정수원님의 강의를 복습하며 정리한 글입니다. DB ItermReader 배치 프로세스는 기본적으로 실시간으로 처리하기 어려울만큼의 방대한 데이터를 다룬다. 따라서 메모리의 효율성, 동작 시간등을 고려해야한다. 스프링 배치는 이에 대응하기 위해 크게 두 가지 방식의 ItemReader의 대응방식을 제공해준다. Cursor / Paging Cursor 형식 현재 cursor가 가리키는 곳의 데이터를 읽고, Cursor는 다음 데이터를 가리킨다. ResultSet이 Open 될 때 마다 next() 메서드가 호출되어 DB의 데이터가 반환되고, 객체와 맵핑이 이루어진다. DB Connection은 배치 처리가 완료될 때까지 데이터를 읽어오기 때문에 DB 연결시간이 길다. 모든 데이터를 메모리에 ..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. ChunkOrientedTaskletStep 순서도 앞선 게시글들에서 Chunk가 무엇인지, ChunkOrientedTaskletStep은 어떻게 이루어졌는지에 대해 공부를 했다. 조각조각된 내용들일텐데 이걸 하나로 모아서 한번 보려고 한다. Job에서 TaskLetStep으로 이동한다. TaskLetStep에서 RepeatTemplate을 이용해 반복을 실행한다. RepeatTemplate 내에서 ChunkOrientedTasklet을 반복적으로 수행해준다. ChunkOrientedTasklet의 ChunkProvider에서 ItemReader로부터 값을 읽는다. 이 때, Repeat Template을 통해서 반복적으로 값을 읽는다. It..
이 강의는 인프런 정수원님의 강의를 수강하고 복습하며 작성한 글입니다. ItemReader ItemReader는 인터페이스고, 여러 구현체가 존재한다. 여러 구현체는 다양한 소스를 하나씩 읽어오는 기능을 구현해준다. ItemReader는 ChunkOrientedTasklet을 사용할 때, 필수적으로 설정해줘야한다. ItemReader가 읽어올 수 있는 소스는 다음과 같다. Flat 파일 : csv, txt XML,JSON DB JMS(Java Message Service), RabbitMQ와 같은 Messag Queuing 서비스 Custom Reader → 사용자 설정 Reader. 직접 구현 시, 멀티 스레드 환경에서 스레드에 안전하게 구현해야함. ItemReader의 메서드 ItemReader는 r..
이 게시글은 인프런의 정수원님의 강의를 듣고 복습하며 작성한 글입니다. ChunkOrientedTaskLet ChunkOrientedTaskLet은 Spring Batch에서 제공하는 TaskLet 인터페이스의 구현체다. 내부적으로 Chunk를 가지고 있어 Chunk 프로세스 처리가 가능하다. ChunkOrientedTaskLet은 내부적으로 ItemReader / ItemProcessor / ItemWriter를 가지고 있으며 이들이 Chunk 프로세스 처리를 해준다. 내부적으로는 Repeat Templeate을 가지고 있어, ChunkOrientedTasklet이 실행될 때 마다, 새로운 트랜잭션이 생성되어 처리가 이루어진다. 이 때, 트랜잭션 과정에 Exception이 발생하면 Roll Back이 ..