[Quartz] CronExpression getNextInvalidTimeAfter

JAVA|2019. 7. 2. 14:30

개발한 스케줄러에서는 cronExpression 해석부분 처리를 위해 Quartz의 CronExpression 클래스를 활용하고 있습니다.

(expression 파싱과 다음 시간 구하는 부분은 굳이.. 새로 개발할 필요성을 느끼지 못해서..)

 

스케줄 시작시간 시간부터 해당 스케줄의 다음 invoke 타임을 구하기 때문에

ex) 등록 9시, 시작시간 10시, cronExpression 5초마다 기존에는 10시 5초 부터 스케줄 실행.. 사용자는 10시부터 실행되길 기대

 

 

스케줄 시작시간(startTime) 시점과 invoke 타임이 일치하는 경우 invoke가 안되는 부분이 있었습니다.

때문에, "아 그럼 미리 invokeTime 을 구해두면 되겠구나" 라는 생각으로 미리 구하자는 생각으로 작업에 들어갔고,

 

1. 현재 시간이 스케줄 시작시간 보다 이른경우 스케줄 시작시간 시점으로 다음 스케줄 시간을 구해 놓자

 

라고 생각하고 테스트 작성 후 개발했지만 생각과 다르게 동작했습니다..

(10시를 넘겼는데, 계속 nextInvokeTime은 10시 5초..)

해서.. 코드를 열어보니..

준 시간에 1000, 즉 1초를 더하고 있었습니다..;;

(하긴.. getTimeAfter이니.. quartz cron 표현식 상 초단위이기 때문인것..)

 

결국 교훈은 가져다 쓴 코드는 코드를 까보고 이해하고 쓰자.. 입니다.

 

 

 

댓글()