내가 필요해서 내가 적는 블로그

JAVA 백엔드 개발자의 기록들

JAVA

[JAVA] java cron expression

돌프 2021. 10. 29. 16:54
반응형

Quartz에서 사용하는 crontab 표현식을 알아보자(feat. Java Spring) 

 

Support for specifying both a day-of-week AND a day-of-month parameter is not implemented. 

(ERROR CASE 내용 포함)

 

 

Quartz에서 사용하는 표현식은 아래와 같다. 

 

//매일 새벽1시에 수행

@Scheduled(cron="0 0 1 * * ?")

   *   *   *   *   *   *        *    6자리 혹은 7자리(year은 생략 가능)

  초 분  시 일  월 요일  연도(생략가능)

 

 

[특수문자 표현]

* 아스테리스크 : ALL 모든값을 의미

? 물음표 : 특정값 없음

- 하이픈 : 값의 범위 지정

, 콤마 : 여러개의 값을 지정

/ 슬러시 : 초기값과 증가치를 지정

1-7 : 일요일~토요일까지 (1.일 2.월 3.화 4.수 5.목 6.금 7.토)

 

ex)

매일 새벽1시 실행

cron = "0 0 1 * * ?"

 

5분마다 실행

cron = "0 0/5 * * * ?"

 

2021년 10월 29일 1시에 실행

cron = "0 0 1 29 10 * 2021"    7자리

 

매년, 일요일에서 금요일까지(토 제외) 새벽2시에 실행

cron = "0 0 2 ? * 1-6 *"

(0초 0분 2시 요일값없음 매월 일요일~금요일 매년)

 

 

개발기에서 테스트중 스케줄러가 수행되지 않는다는 장애접수를 받아서 봤더니,

위와 같은 ERROR 메세지가 나타났다. 

Support for specifying both a day-of-week AND a day-of-month parameter is not implemented. 

일자를 나타내는 4번째 필드와 요일을 나타내는 6번째 필드는 동시에 값을 지정할 수 없다는 Quartz의 ERROR 메세지이다.

 

따라서, 아래와 같이 마지막 요일 값을 ? 표로 변경하였다. 

@Scheduled(cron="0 0 5 * * *")  → ERROR 발생

@Scheduled(cron="0 0 5 * * ?" 수정완료

 

빠잇!

 

 

본문 내용이 도움이 되셨다면, 아래의 공감버튼을 눌러주세요. 

정보 공유를 위한 포스팅에 큰 힘이 됩니다. 

만약 틀린 정보가 있으면 댓글 달아주세요. 수정하도록 하겠습니다. 

읽어주셔서 감사합니다. 오늘도 좋은 하루 보내세요. 

반응형