Quartz 개념

  • Job : 실제 작업에 대한 실행 로직
  • Trigger : Job 의 실행주기를 관리
  • Job Store : Job 과 Trigger 의 실행현황 저장을 위한 방식 지정 (RAMJobStore, JDBCJobStore 등)
  • Listener : Job 과 Trigger 에 대해 실행전후, 혹은 실행실패에 대한 CallBack 을 관리

Job 생성 구조

  • Inteface Job : 수행할 “작업”을 나타나는 클래스에 의해 구현될 인터페이스. Quartz 에만 한정되지 않고 EJB, JMX, MailSender 등 다양한 작업에 대한 구현에 사용된다.
  • QuartzJobBean : Job 의 구현체 중 하나로 Quartz 의 Job 을 사용하기 위한 목적으로 구현되었으며, “extends QuartzJobBean” 을 통해 만들고자 하는 클래스를 Quartz Job 을 위한 클래스로 구현할 수 있다.

org.springframework.scheduling.quartz 의 TriggerFactoryBean List

  • SimpleTriggerFactoryBean : startDelay 와 repeatInterval 으로 실행주기를 결정하는 TriggerFactory
  • CronTriggerFactoryBean : Cron Expression 으로 실행주기를 결정하는 TriggerFactory

Misfire Instructions

Misfire는 Job이 실행되어야 하는 시간, fire time을 지키지 못한 실행 불발을 의미한다. 이런 Misfire는 Scheduler가 종료될 때나 쓰레드 풀에 사용 가능한 쓰레드가 없는 경우에 발생할 수 있다. Scheduler가 Misfire된 Trigger에 대해서 어떻게 처리할 지에 대한 다양한 policy를 지원한다.

  • MISFIRE_INSTRUCTION_FIRE_NOW - 바로 실행
  • MISFIRE_INSTRUCTION_DO_NOTHING - 아무것도 하지 않음

참고

  • http://www.quartz-scheduler.org/documentation/
  • https://www.baeldung.com/spring-quartz-schedule
  • https://offbyone.tistory.com/256
  • https://heodolf.tistory.com/135
  • https://kouzie.github.io/spring/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-Quartz/
  • https://sabarada.tistory.com/113