티스토리 뷰
Springboot 환경이 보편화가 되고 많은 부분들이 편해졌고 필자는 Batch가 엄청나게 편해진것 같다. 많이 사용해서 그런것 같다. 왜 Springboot Batch가 좋은지에 대해서는 이 글에서 다룬적이 있다. 그리고 빌드 및 실행방법에 대해서는 예전 xml config 기반의 Spring Batch 환경 구성하는 포스팅에서 다룬적이 있었지만 Springboot 기반의 환경에서는 어떻게 하는지 살펴보자. 아주 간단하다.
일단 빌드에 앞서 springboot의 main 클래스를 살펴보자.
import java.util.ArrayList; import java.util.List; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableBatchProcessing @SpringBootApplication public class BatchProcessingApplication { public static void main(String[] args) throws Exception { List<String> params = new ArrayList<>(); for(String key : args){ params.add(key); } params.add("requestDate="+System.currentTimeMillis()); System.exit(SpringApplication.exit(SpringApplication.run(BatchProcessingApplication.class, params.toArray(new String[0])))); } }
main 클래스에서 param에 requestDate 라는 값을 넣어서 항상 실행할때마다 param이 변경이 되도록 처리를 했다. param 값이 이런식으로 매번 변경이 되어야 서로 다른 Job으로 인식이 되어 계속 실행을 해볼 수 있다. 이런 방식이 싫다면 나중에 jar를 실행할 때 이런 값을 직접 넣어주면 된다.
springboot batch build
springboot batch를 build 할때는 maven 구조의 프로젝트면 위와 같이 Maven install을 하여 진행한다. package로 빌드된 파일을 얻을수도 있지만 우클릭할때 보이는건 install이라 그냥 이걸로 빌드를 한다.
빌드가 완료되면 위와 같이 target 폴더 혹은 maven repository에서 jar파일을 찾을 수 있다. Batch를 실행시키기 위해서는 이 파일을 실행시키면 된다. 해당 파일이 있는 실제 공간으로 가서 cmd 혹은 powershell을 열어준다.
springboot batch run
파일을 확인 했으면 이 jar파일을 실행시키면 된다.
> java -jar batch-process-0.0.1-SNAPSHOT.jar --job.name=sampleTaskletJob
실행시킬 job을 --job.name 뒤에 붙여서 실행을 하면 된다.
실행이 정상적으로 된다면 위와 같은 로그가 출력되면서 Batch job을 수행하게 된다.
끝!
'Framework > Batch' 카테고리의 다른 글
[Spring Batch] Decider Simple Example (Springboot based) (0) | 2021.05.17 |
---|---|
[Spring Batch] Partitioner Simple Example (Springboot based) (3) | 2021.05.06 |
[Spring Batch] Chunk Example (DB to File, Springboot based) (0) | 2021.03.10 |
Spring Batch 오류시 exitCode 설정하여 Jenkins에서 실패로 인식하도록 하는 방법 (0) | 2020.11.30 |
Spring Batch jobParameters 사용하는 방법 (with @JobScope, @StepScope) (0) | 2020.11.04 |