loop step 2

Spring batch step loop 할 때 메모리 이슈

(한달 전에 삽질했던 내용인데 이제 씀) 지난번에 step을 loop 구조로 하는 것에 대한 포스팅을 했었다.http://marobiana.tistory.com/133 여기에는 주의해야할 점이 있다. 싱글톤 bean이 아닌 bean을 Step 단위로 loop를 돌릴 경우,Step이 수행될 때마다 새 bean이 생성되고,다음 loop로 넘어가도, 이전 스텝에서 생긴 bean은 메모리 해제가 되지 않는다. 그 bean들은 계속 누적이되어 memory leak을 일으킨다. 쓰레드덤프를 떠본 것 까진 아니지만일정한 속도로 여러번 batch를 수행시켰을 때 같은 시간 경과 후 (2시간 30분) job이 죽었다. 로그를 보니 Out of Memory였다. 나의 경우 singleton bean으로 처리하지 못했던 이..

개발/Spring Batch 2016.07.22

step을 loop 구조로 수행하기, step과 step간 파라미터 넘기기

보통은 한 step 내에서 Reader, Writer 구조로 잡고, reader 내에서 페이징을 하지만 아래 예제의 경우 한 step을 Reader처럼 두고, loop를 돌면서 Step 간의 페이징을 해볼 것이다. * 흐름에 대한 대략적인 정리라 컴파일은 따로 안해봤음 1. job.xml 설정 2. Reader Tasklet public class TestItemReaderTaskletimplements Tasklet { @Autowired private testDAO testDAO; private int pageSize; // TODO getter, setter @Override public RepeatStatus execute(StepContribution contribution, ChunkConte..

개발/Spring Batch 2016.06.22