1. 문제 상황 데이터베이스를 기준으로 ItemReader의 구현체를 나눌 때, Cursor Based ItemReader과 Paging Based ItemReader으로 나눌 수 있다. Cursor 기반의 ItemReader의 경우, 데이터베이스 커넥션을 지속적으로 독점으로 사용하여 처리가 완료되는 시점까지 커넥션을 놓아주지 않기 때문에, 경우에 따라 성능상에 영향을 줄 수 있다. 따라서 Paging 기반의 ItemReader를 선택했고 최근에 스케줄러와, 배치 로직을 개발했다. 하지만 실제 로직 수행 결과는 원하는데로 되지 않았고, 몇 개의 데이터를 건너뛴채로 수행되었다. 나의 배치 로직은 특정 조건을 만족하면 PENDING 중이던 Apply를 CANCELED로 변경해주는 것이다. 사진에서 work_..
1. 개요이전 프로젝트에서 일괄적으로 알림을 보내는 기능을 개발했었는데 기능 구현을 위해 스프링 배치를 학습했었다. 그때도 ItemReader의 종류가 여러가지 있는 건 알았지만 우선 아무거나 선택해 구현했었는데 이번 기회에 제대로 알아보려고 한다. 2. Spring Batch Chunk?Spring Batch에서 일괄 처리를 하는 방법은 크게 두가지가 있다. 바로 Tasklet 기반과 Chunk 기반인데 ItemReader은 Chunk 방식에서 사용되는 것이다. ItemReader에 학습하기 앞서 Chunk에 대해 가볍게 알아보자. Spring Batch에서의 Chunk란 데이터 덩어리로 작업 할 때 각 커밋 사이에 처리되는 row 수를 얘기한다. 즉, Chunk 지향 처리란 ..
1. 서론 진행중인 프로젝트에서 아래 사진과 같은 기능을 구현하게 되었다. 기능 설명부터 간단히 하면 본인이 올린 공고글이 있으면 특정 노동자에게 일자리를 제안할 수 있는 기능이다. 이때 노동자의 출역 가능한 날짜와 공고글의 출역 날짜를 비교하여 제안할 수 있다. 기업은 노동자에게 일자리를 제안할 때 여러 개의 공고글을 제안할 수 있다. 동시에 각 공고글은 여러 날을 선택하여 제안할 수 있다. 예를 들어 1,2,3일을 일하는 공고글 A와 2,3,4일을 일하는 공고글 B가 있고, C라는 노동자는 2일날 출역이 확정된 상황이 있다고 가정하자. 그럼 기업은 C노동자에게 공고 A의 1,3일, 공고 B의 3,4일을 제안할 수 있는 것이다. 요청 JSON은 다음과 같다. { "resumeId": 1, "offerJ..
Spring Event를 처음 들어본다면 아래 글을 먼저 보고 오는 것을 추천한다. https://dgjinsu.tistory.com/41 [Event] Spring Event 왜 사용할까?? 1. 이벤트를 사용하는 이유 Spring Boot에서 이벤트를 적용하는 방법에 대해 들어가기 전에, 이벤트를 왜 써야하는지, 사용하면 좋은 상황에 대해 먼저 알아보자. 회원가입을 하고 나면 가입 축하 dgjinsu.tistory.com https://dgjinsu.tistory.com/42 [Event] Spring Event 도입 시 트랜잭션 처리에 대한 고민 1. 서론 전 게시글에서 Spring Event로 의존성을 개선하는 법을 다뤄보았다. 하지만 한 트랜잭션 안에서 처리하던 것들이 흩어지면서 문제되는 부분도..