Today
-
Yesterday
-
Total
-
  • spring boot: 스케줄링
    Spring Boot 🍃 2023. 12. 2. 00:01

    @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로 스케줄링을 수행하게 된다면 해당 이슈가 발생할 수 있다는 가능성을 염두에 두고 스케줄링을 해야한다.

Designed by Tistory / Custom by 얼거스