-
스프링 스케줄러 사용법극락코딩 2023. 7. 30. 23:22
스프링 스케줄러 사용법
스케줄링 관련 서비스를 구현할때, 어떤 주기로 스케줄링을 할지 고민할 때가 많다. cron 및 스프링 스케줄러에서 지원하는 기능을 알아보자
스프링 스케줄러 패키지
Gradle: org.springframework:spring-context / org.springframework.scheduling
먼저 스케줄러를 사용하기 위해서는 스프링 스케줄러 빈을 등록해야 한다. 스케줄러를 사용한다고 명시해야 사용 가능하다
@Configuration @EnableScheduling class SchedulerConfig { }
스케줄러 주기를 설정하는 방법은 다음과 같다.
- cron
- fixedDelay
- fixedDelayString
- fixedRate
- fixedRateString
그외..
- zone
- initialDelay
- initialDelayString
cron
ex) @Scheduled(cron = "* * * * * *") ┌───────────── second (0-59) │ ┌───────────── minute (0 - 59) │ │ ┌───────────── hour (0 - 23) │ │ │ ┌───────────── day of the month (1 - 31) │ │ │ │ ┌───────────── month (1 - 12) (or JAN-DEC) │ │ │ │ │ ┌───────────── day of the week (0 - 7) │ │ │ │ │ │ (0 or 7 is Sunday, or MON-SUN) │ │ │ │ │ │ * * * * * *
예시
"0 0 * * * *" = the top of every hour of every day. "*/10 * * * * *" = every ten seconds. "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day. "0 0 6,19 * * *" = 6:00 AM and 7:00 PM every day. "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day. "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays "0 0 0 25 12 ?" = every Christmas Day at midnight "0 0 0 L * *" = last day of the month at midnight "0 0 0 L-3 * *" = third-to-last day of the month at midnight "0 0 0 1W * *" = first weekday of the month at midnight "0 0 0 LW * *" = last weekday of the month at midnight "0 0 0 * * 5L" = last Friday of the month at midnight "0 0 0 * * THUL" = last Thursday of the month at midnight "0 0 0 ? * 5#2" = the second Friday in the month at midnight "0 0 0 ? * MON#1" = the first Monday in the month at midnight
fixedDelay
현재 진행중인 작업이 끝난 시점으로 지정된 시간 이후에 스케줄링 동작 (ms 기준) ex) @Scheduled(fixedDelay = 1000)
fixedDelay
현재 진행중인 작업이 끝난 시점으로 지정된 시간 이후에 스케줄링 동작 (ms 기준) ex) @Scheduled(fixedDelayString = "1000")
fixedRate
스케줄러가 동작하고 나서 지정된 시간 이후에 다시 스케줄링 동작 (ms 기준) 현재 작업의 완료와 무관 ex) @Scheduled(fixedRate = 1000)
fixedRateString
스케줄러가 동작하고 나서 지정된 시간 이후에 다시 스케줄링 동작 (ms 기준) 현재 작업의 완료와 무관 ex) @Scheduled(fixedRate = "1000")
initialDelay
애플리케이션이 시작되고 지정된 시간이 지난 이후부터 스케줄러가 동작 (ms 기준) fixedDelay, fixedRate와 같이 사용 ex) @Scheduled(fixedDelay=5000, initialDelay = 1000)
initalDelayString
애플리케이션이 시작되고 지정된 시간이 지난 이후부터 스케줄러가 동작 (ms 기준) fixedDelay, fixedRate와 같이 사용 ex) @Scheduled(fixedDelay="5000", initialDelay = "1000")
Zone
스케줄러의 동작에 대해 어떤 Time Zone으로 진행할 것인지 선택 zone을 지정하지 않은 경우, local time zone으로 동작 ex) @Scheduled(crom = "0 0 0 * * *", zone = "Asia/Seoul")
'극락코딩' 카테고리의 다른 글
ThreadLocal을 간단하게 살펴보기 (0) 2023.08.15 ehcache 사용하기 (로컬 캐시 사용하기) (0) 2023.08.09 시멘틱 버저닝이란 무엇인가? (0) 2023.08.09 OLTP와 OLAP (0) 2023.07.30 Server Shutdown (0) 2023.07.30