Quartz Job Scheduler
⏰ 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
🔄 동작 흐름
- Scheduler를 생성한다.
- JobDetail과 Trigger를 만든다.
- Scheduler에 등록한다.
- Scheduler를 시작한다.
- Trigger 조건이 맞으면 Job이 실행된다.

🛠️ 실무에서 자주 쓰는 경우
- 배치 작업 실행
- 주기적 통계 수집
- 만료 데이터 정리
- 이메일 발송 예약
- 외부 API 주기 호출
⚠️ 주의할 점
- 중복 실행 여부를 고려해야 한다.
- DB 기반 JobStore는 트랜잭션과 잠금을 함께 봐야 한다.
- Cron Expression이 복잡해질 수 있으므로 가독성을 유지해야 한다.
- 실패 시 재시도 정책을 명확히 해야 한다.
[!important] 정리 Quartz는 정해진 시점에 안정적으로 작업을 실행하는 스케줄링 엔진이다. 반복 실행, 예약 실행, DB 기반 관리가 필요할 때 유용하다.
댓글남기기