⏰ Quartz Job Scheduler란?

정의

Quartz는 Java 기반에서 정기 작업을 예약하고 관리하는 스케줄링 라이브러리이다. 원하는 시간에 Job을 실행하고, 반복 주기나 조건을 세밀하게 조정할 수 있다.

🎯 사용하는 이유

  • 특정 시간에 작업을 실행한다.
  • 반복 작업을 자동화한다.
  • DB 기반으로 스케줄 정보를 관리할 수 있다.
  • 여러 Trigger를 조합할 수 있다.
  • 실패한 작업에 대한 재처리를 다루기 좋다.

포인트

Quartz는 단순한 반복 실행 도구가 아니라 스케줄 조건과 실행 상태를 함께 관리하는 프레임워크에 가깝다.

🧱 주요 구성 요소

Job

  • 실행 로직을 담는 클래스다.
public class CustomJob implements Job {
    @Override
    public void execute(JobExecutionContext context) {
        // 작업 로직
    }
}

JobDetail

  • Job의 메타 정보를 담는다.
  • 어떤 Job을 실행할지 정의한다.

JobDataMap

  • 실행 시 필요한 데이터를 담는다.

Trigger

종류 설명
SimpleTrigger 일정 간격 반복 작업
CronTrigger Cron Expression 기반 작업
Trigger trigger = TriggerBuilder.newTrigger()
        .withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?"))
        .build();

Scheduler

  • Job과 Trigger를 등록하고 실행을 관리한다.

JobStore

종류 설명
RAMJobStore 메모리 기반
JDBCJobStore DB 저장 기반

구분

메모리 기반은 단순하지만 서버 재시작 시 정보가 사라질 수 있다. DB 기반은 운영 환경에서 더 안정적으로 사용할 수 있다.

Misfire

  • 예정된 시각에 Job을 실행하지 못한 경우의 처리 방식이다.

Listener

  • JobListener
  • TriggerListener

🔄 동작 흐름

  1. Scheduler를 생성한다.
  2. JobDetail과 Trigger를 만든다.
  3. Scheduler에 등록한다.
  4. Scheduler를 시작한다.
  5. Trigger 조건이 맞으면 Job이 실행된다.

image

🛠️ 실무에서 자주 쓰는 경우

  • 배치 작업 실행
  • 주기적 통계 수집
  • 만료 데이터 정리
  • 이메일 발송 예약
  • 외부 API 주기 호출

⚠️ 주의할 점

  • 중복 실행 여부를 고려해야 한다.
  • DB 기반 JobStore는 트랜잭션과 잠금을 함께 봐야 한다.
  • Cron Expression이 복잡해질 수 있으므로 가독성을 유지해야 한다.
  • 실패 시 재시도 정책을 명확히 해야 한다.

[!important] 정리 Quartz는 정해진 시점에 안정적으로 작업을 실행하는 스케줄링 엔진이다. 반복 실행, 예약 실행, DB 기반 관리가 필요할 때 유용하다.


연결문서

댓글남기기