목차
잡 실행하기
스프링 부트로 잡 실행하기
- 스프링 부트를 사용해서 스프링 배치를 실행할 때는 ApplicationRunner의 구현체인 JobLauncherCommandLineRunner가 사용된다.
- ApplicationRunner 인터페이스는 스프링 ApplicationContext가 준비되면 호출되는 run() 메소드를 하나 가지고 있다.
- 스프링 부트는 기동시 spring-boot-starter-batch가 클래스 패스에 존재하면 JobLauncherCommandLineRunner를 실행한다.
- JobLauncherCommandLineRunner는 JobLauncher를 사용해 컨텍스트 내에서 찾아낸 모든 잡을 실행한다.
- 애플리케이션 기동시 어떤 잡도 실행하지 않도록 설정할 수 있다.
- REST 호출이나 특정한 이벤트가 발생했을 때 잡을 실행하려는 경우에 사용하면 된다.
- "spring.batch.job.enabled" 프로퍼티를 false로 지정하면 된다. default는 true이다.
// spring yaml
spring.batch.job.enabled: false
// spring application
public static void main(String[] args) {
SpringApplication application = new SpringApplication(...);
Properties properties = new Properties();
properties.put("spring.batch.job.enabled", false);
application.setDefaultProperties(properties);
application.run(args);
}
- 컨텍스트에 여러 잡이 정의되어 있는 상황에서, 기동 시에 특정한 잡만 실행하도록 설정할 수 있다.
- "spring.batch.job.names" 프로퍼티에 잡 목록을 "," 구분자로 나열하면 된다.
- "spring.batch.job.names" 프로퍼티가 존재하지 않으면 모든 잡을 실행해 버리기 때문에 주의한다.
- 실수로 지정하지 않는 경우를 방어하기 위한 처리를 해 주는 것이 안전하다.
- kwonnam.pe.kr/wiki/springframework/springboot/batch 의 "spring.batch.job.names:NONE" 부분을 참고한다.
REST 방식으로 잡 실행하기
- REST API에서 특정한 Job을 실행하도록 할 수 있다.
- Spring Controller에서 JobLauncher의 인스턴스를 얻어 job을 실행하는 방식이다.
- 일반적으로 Job은 시간이 오래 걸리기 때문에 API가 실행되는 스레드와는 다른 스레드에서 Job을 실행하도록 TaskExecutor를 설정해 주어야 한다.
- 관련 내용과 예제는 p.207~214를 참고하자.
Quartz로 스케줄링하기
- 배치 잡을 Quartz(www.quartz-scheduler.org)를 사용하여 스케줄링할 수 있다.
- Quartz는 단일 노드에서 사용할 수 있는 메모리 기반의 스케줄링과 다중 노드에서 사용할 수 있는 DB 기반의 스케줄링을 제공한다.
- 관련 내용과 예제는 p.215~219를 참고하자.
- Quartz는 단순히 스케줄링 기능만 제공하기 때문에 많이 사용되지는 않는다.
- Jenkins는 스케줄링, 대시보드, 실패시 알림, 히스토리 등 강력한 기능을 제공하기 때문에 배치 실행 플랫폼으로 많이 사용된다.
잡 중지하기
정상적인 종료
프로그래밍적으로 중지하기
Stop Transition 사용하기
StepExecution을 사용해 중지하기
오류 처리하기
잡 실패
재시작 제어하기 (Controlling Restart)
잡의 재시작 방지하기
재시작 횟수를 제한하도록 구성하기
완료된 스텝 재실행하기
'잡다구리' 카테고리의 다른 글
스레드 상태 (Thread State) (0) | 2022.08.12 |
---|---|
Redis Cluster 구성 테스트 (0) | 2022.08.12 |
redis docker (0) | 2021.08.24 |
날짜와 시간 (0) | 2021.07.31 |
스프링 배치 완벽 가이드 - 5. JobRepository와 메타데이터 (0) | 2021.05.06 |
스프링 배치 완벽 가이드 - 4. 잡과 스텝 이해하기 (0) | 2021.05.02 |
스프링 배치 완벽 가이드 - 3. 예제 잡 애플리케이션 (0) | 2021.05.02 |
스프링 배치 완벽 가이드 - 2. 스프링 배치 (0) | 2021.05.01 |
댓글