ch05. 스프링 프레임워크 심화 - 스케줄링
스프링은 정기적으로 빈 메소드를 실행할 수 있는 스케줄링 기능을 제공한다.
@Scheduled로 작업 스케줄링하기
- Project Application Class에 @EnableScheduling 추가
- scheduler를 사용할 Class에 @Component, Method에 @Scheduled 추가
- @Scheduled 규칙
- Method는 void 타입으로
- Method는 매개변수 사용 불가
Setting information
fixedDelay
이전 작업이 종료된 후 설정시간(milliseconds) 이후에 다시 시작
이전 작업이 완료될 때까지 대기
해당 메서드가 끝나는 시간 기준, milliseconds 간격으로 실행
하나의 인스턴스만 항상 실행되도록 해야 할 상황에서 유용
@Scheduled(fixedDelay = 1000)
// @Scheduled(fixedDelayString = "${fixedDelay.in.milliseconds}") // 문자열 milliseconds 사용 시
public void scheduleFixedDelayTask() throws InterruptedException {
log.info("Fixed delay task - {}", System.currentTimeMillis() / 1000);
Thread.sleep(5000);
}
fixedDelayString
fixedDelay와 동일 하고 설정시간(milliseconds)을 문자로 입력하는 경우 사용
fixedRate
고정 시간 간격으로 시작
이전 작업이 완료될 때까지 다음 작업이 진행되지 않음
병렬 동작을 사용할 경우 @Async 추가
해당 메서드가 시작하는 시간 기준, milliseconds 간격으로 실행
병렬로 Scheduler 를 사용할 경우, Class에 @EnableAsync, Method에 @Async 추가
모든 실행이 독립적인 경우에 유용
@Async
@Scheduled(fixedRate = 1000)
// @Scheduled(fixedRateString = "${fixedRate.in.milliseconds}") // 문자열 milliseconds 사용 시
public void scheduleFixedRateTask() throws InterruptedException {
log.info("Fixed rate task - {}", System.currentTimeMillis() / 1000);
Thread.sleep(5000);
}
fixedRateString
fixedRate와 동일 하고 설정시간(milliseconds)을 문자로 입력
initialDelay
설정된 initialDelay 시간 후부터 fixedDelay 시간 간격으로 실행
initialDelayString
initialDelay와 동일 하고 설정시간(milliseconds)을 문자로 입력
cron
Cron 표현식을 사용한 작업 예약
cron = "* * * * * *"
첫번째 부터 초(0-59) 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
zone
zone = "Asia/Seoul"
미설정시 Local 시간대 사용
A Time Zones
fixedDelay + fixedRate
initialDelay 값 이후 처음 실행 되고, fixedDelay 값에 따라 계속 실행
@Scheduled(fixedDelay = 1000, initialDelay = 5000)
public void scheduleFixedRateWithInitialDelayTask() {
long now = System.currentTimeMillis() / 1000;
log.info("Fixed rate task with one second initial delay - {}", now);
}
'Study > Mastering-Spring-5-Study' 카테고리의 다른 글
ch07. Rest API 단위테스트 (0) | 2023.01.15 |
---|---|
ch06. 스프링 부트로 REST API 구축 (0) | 2023.01.04 |
ch05. 스프링 프레임워크 심화 - 병렬 프로그래밍 (0) | 2022.12.31 |
ch05. 스프링 프레임워크 심화 - AOP (0) | 2022.12.31 |
ch04. 스프링부트_시작하기 (0) | 2022.12.31 |
댓글