반응형

Develop/spring-batch 7

[Kotlin] Spring-Batch QuerydslPagingItemReader 개선편

들어가기 전에 Spring-Batch 에서 Chunk 개념을 이용하려면 ItemReader를 사용합니다. ItemWriter에서 ItemReader에서 사용한 쿼리에 영향을 미치는 상태값을 변경할 경우가 있습니다. 이와 같은 경우 필요한 기능을 정리한 글입니다. ItemReader를 사용한 Query ItemReader는 Query에 offset과 limit을 사용합니다. // 1 select id, address, name from person where state = 'STUDY' limit 5 // 2 select id, address, name from person where state = 'STUDY' offset 5 limit 5 // 3 select id, address, name from ..

[kotlin] Spring-Batch Alert 처리 ( Logback을 이용한 Slack 연동 )

이번 글에서는 Spring-Batch에서 오류가 났을 경우 에러를 Alert처리하는 글을 정리하겠습니다. 모든 소스는 Github에 올려두었습니다. Alert처리하는 방법은 여러가지 종류가 있습니다. Prometheus, Alert-Manager를 이용한 방법 Slack을 이용한 Webhook 방법 그 외 등등.. 이번 글에서는 Slack을 이용한 Webhook 방법에 대해서 정리하겠습니다. Prometheus, Alert-Manager를 이용한 방법은 추 후에 작성예정입니다. Prometheus, Alert-Manager 구현 방법에 대해서는 여기 를 참조해주시기 바랍니다. 적용 방법 Logback을 적용하여 Error 로그가 작성된 경우 Slack으로 Webhook을 날리는 방식입니다. Slack C..

[Kotlin] Spring-Batch (JPA 적용) Junit5를 이용한 Test Code 작성

이번 글에서는 JPA를 적용한 Spring Batch Job을 테스트하는 글을 작성하겠습니다. 모든 소스는 Github에 올려두었습니다. 들어가기 전에 테스트 환경에서의 데이터베이스는 H2, Test Docker Container, Local 환경에 Database 띄우기 등 다양한 방법으로 테스트할 수 있습니다. 하지만 이번 글에서는 실제 DB에 붙었을 경우 테스트 데이터를 생성 삭제하기 위해서는 어떻게 하는지에 대해 작성했습니다. Job 먼저 JOB을 살펴보겠습니다. @Configuration class SimpleJobConfiguration( val jobBuilderFactory: JobBuilderFactory, val stepBuilderFactory: StepBuilderFactory, v..

[Kotlin] Spring-Batch 적용

이 글은 Kotlin으로 Spring Batch를 구현한 내용을 정리한 내용입니다. 코드의 양이 많아 중요한 부분 위주로만 작성하였습니다. 모든 코드는 Github에 있습니다. 참조해주세요. 글을 작성하기에 앞서 작업한 내용은 지난번 작성한 글을 기준으로 작성하였습니다. 함께보시면 이해하시기 편할 것 입니다. 이 글에서는 Spring-Batch가 무엇인지에 대해서는 다루지 않겠습니다. Spring-Batch를 Java, Querydsl-JPA로 구현이 가능해야 이해하는 데 무리가 없을 것입니다. build.gradle.kts import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { val kotlinVersion = "1.4.31" id("org..

Spring batch에 Spring Data JPA 기반 Querydsl을 적용해보자! (QuerydlsPagingItemReader)

이번 글에서는 Spring batch에 QuerydslPagingItemReader를 생성하여 적용시켜 테스트까지 해보는 과정을 정리하겠습니다. 우아한 형제들의 이동욱님의 세미나와 티스토리를 엄청나게 참조해서 만들었습니다. 모든 소스는 github에 있습니다. SpringBatch에 대해서 궁금하시면? Spring Batch 란? Spring batch 스케줄 생성! [Jenkins] Spring Batch Jenkins Schedule 사용 시 서비스 관리 방법 JPA에 대해서 궁금하시면? JPA란? JPA 시작 그리고 예제 JPA 테스트 코드로 알아보자! Querydsl에 대해서 궁금하시면? Querydsl란? Querydsl 사용해보자. ( 설정편 ) Querydsl plugin 실행방법 Query..

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
반응형