spring boot: 스케줄링

김아무개·2023년 5월 22일
0

Spring Boot 🍃

목록 보기
31/95

@Scheduled

Scheduled 어노테이션 사용으로 ,

이 어노테이션을 이용하여 스케줄링 프로그램을 작성할 수 있다.

@Scheduled 어노테이션은 cron 표현식의 String 문자열을 인자로 받아서 동작한다.

@Scheduled 어노테이션을 사용하기 위해서는

Application 클래스에

@EnableScheduling 어노테이션을 붙여주어야 한다.

cron 표현식

리눅스 및 유닉스 기반 운영 체제에서 스케줄 작업을 지정하는 데 사용되는 표현식.

cron 표현식 구성

초 분 시 일 월 요일

(0-59)(0-59)(0-23)(1-31)(1-12) 요일 (0-7, 일요일=0 또는 7)

사용 될 수 있는 기호

* : 모든 값.

, : 값의 리스트. 쉼표로 구분된 여러 값을 지정할 수 있다.

- : 범위. 시작 값과 끝 값을 지정하여 범위를 나타낼 수 있다.

/ : 간격. 시작 값부터 주어진 간격으로 값을 지정할 수 있다.

? : 특정 값 없음. 일 또는 요일 필드에서만 사용된다.
      " 해당 필드에 대해 특정한 값이 없음 "을 나타낸다.

L : 마지막 값. 일 또는 요일 필드에서만 사용된다.
      " 해당 필드의 마지막 값을 나타냄 "을 의미

W : 가장 가까운 평일. 일 필드에서만 사용된다.
      " 가장 가까운 평일(월-금)을 나타냄 "을 의미

# : 주차. 일 필드에서만 사용된다.
      " 해당 월의 몇 번째 주의 요일 "을 지정

사용 예시

@Scheduled(cron = "0 0 12 * * ?") // 매일 정오(12시)에 실행

@Scheduled(cron = "0 15 10 ? * MON-FRI") // 평일(월요일부터 금요일) 오전 10시 15분에 실행

@Scheduled(cron = "0 0/5 14,18 * * ?") // 매일 오후 2시부터 6시까지 5분마다 실행

@Scheduled(cron = "0 0 23 ? * SUN#2") // 매월 두 번째 일요일 밤 11시에 실행

fixedDelay

이전의 수행이 종료된 시점을 기준으로 일정 시간이 지난 후 새로운 작업을 수행

fixedRate

이전의 수행이 시작된 시점을 기준으로 일정 시간이 지난 후 새로운 작업을 수행

fixedRate는 작업에 소요되는 수행 시간이 fixedRate에서 지정된 시간보다 길어진다면
두 수행이 겹쳐서 발생할 가능성이 있기 때문에 fixedRate로 스케줄링을 수행하게 된다면
해당 이슈가 발생할 수 있다는 가능성을 염두에 두고 스케줄링을 해야한다.

profile
Hello velog! 

0개의 댓글