반응형

전체 글 169

org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction 해결방법!

Batch 프로젝트를 진행중에 아래와 같은 에러 발생하였습니다. Batch 삽질 삽질 삽질 에러 원인을 요약하자면 하나의 트랜잭션 안에서 다른 실행자를 사용할 수 없다라는 내용이다. 자세한 내용을 찾아보니 실행자 타입 문제였다. MybatisPagingItemReader는 실행자 BATCH를 사용하고 있었다. 참조 org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction 내가 만든 프로젝트는 Reader에서 MybatisPagingItemReader를 이용해 데이터를 조회하고 Processor에서도 Mapper를 통해 데이터를 조..

TroubleShooting 2020.11.04

Spring batch 스케줄 생성! [Jenkins]

이전글에서는 Spring Batch를 만들었습니다. 이번 글에서는 생성된 Spring Batch를 Jenkins로 스케줄 설정하여 실행시켜 보겠습니다. 이 글은 작성하기에 앞서 우아한 형제들 이동욱님의 티스토리를 참조하여 작성하였습니다. 다양한 방법 스케줄에도 다양한 방법이 있습니다. Linux Cron Quartz Cloud Serverless Spring Batch Admin CI Tool Choice 위처럼 다양한 방법이 있지만 CI Tool Jenkins를 사용하였습니다. Linux Cron : 정상적으로 배포했는지 어떻게 알지?? 로그 다 열어봐야하나.. Quartz : 스케쥴링 시간 변경할때마다 소스 수정하고 재배포하고 또 테스트 하고 싶으면 다시 수정하고 배포하고 또 수정하려면 배포하고 수정..

Spring Batch 란? (예제 소스 포함)

작성한 내용은 우아한 형제들의 이동욱님 블로그, 세미나를 참조해서 작성하였습니다. 테스트 및 적용 내용은 Github에 올려두었습니다. 사내에서 배치 프로젝트를 맡아 Spring Batch를 적용하기로 결정하였습니다. Spring Batch 사용 이전 Spring Batch 이전 스케쥴링 작업은 Scheduler, Quartz 등으로 Spring에서 Annotation으로 선언하여 지정된 시간에 스케줄링을 돌려 구현해놓은 클래스를 호출하여 로직을 실행한다. 기존 스케쥴링 방식으로는 대용량 데이터를 처리하는 도중 에러가 발생하면 처리했던 모든 데이터를 롤백시키고 다시 처음부터 처리해야하고, 몇 번째 데이터에서 에러가 발생했는지, 해당 배치 로직이 성공했는지 실패했는지 로그처리를 하여 확인해야하는 불편함이 ..

728x90
반응형