이전 발행글
2025.04.03 - [Backend/Spring(활용)] - Spring 기반 Quartz Scheduler 기본 예제 코드(1) - 구조적 설계와 흐름 설명
Spring 기반 Quartz Scheduler 기본 예제 코드(1) - 구조적 설계와 흐름 설명
📌 목차 1. 전체 아키텍처 개요 2. AutowiringSpringBeanJobFactory 설명 3. QuartzConfig 설정 설명 4. AbstractSchedulerJob 구조 설명 5. TestSimpleJob 역할과 구성 6. TestSimpleProcessor (실제 Job 실행) 7. ApplicationRunner를 이
pjs-world.tistory.com
Github Quartz 관련 코드
https://github.com/namic123/Quartz-Scheduler-Basic-Test
GitHub - namic123/Quartz-Scheduler-Basic-Test: Quartz Scheduler Basic Test
Quartz Scheduler Basic Test. Contribute to namic123/Quartz-Scheduler-Basic-Test development by creating an account on GitHub.
github.com
1. 📘 application.yml 전체 설명
spring:
application:
# 애플리케이션 이름 설정 (로깅, Spring Admin 등에서 식별자 역할)
name: quartzSchedulerTest
datasource:
# Quartz Scheduler에서 사용할 H2 DB 접속 설정
url: jdbc:h2:tcp://localhost/~/quartz-test
driver-class-name: org.h2.Driver
username: sa
password:
sql:
init:
# 애플리케이션 실행 시 SQL 스크립트 자동 실행 설정
mode: always
# Quartz 관련 테이블 정의 SQL 파일 위치
schema-locations: classpath:tables_h2.sql
# 사용자 정의 섹션 - Quartz 설정 파일 경로 전달
setting:
quartz:
# Java 코드에서 properties 파일 경로로 참조함
file-path: quartz.properties
2. ⚙️ quartz.properties 전체 설명
# ===============================
# ▶ Scheduler 설정
# ===============================
# 스케줄러 인스턴스 이름
org.quartz.scheduler.instanceName=QuartzScheduler
# 인스턴스 ID 자동 생성 (클러스터 구분용)
org.quartz.scheduler.instanceId=AUTO
# ===============================
# ▶ ThreadPool 설정
# ===============================
# 스레드풀 구현체 (SimpleThreadPool 사용)
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
# 동시에 실행 가능한 Job 수
org.quartz.threadPool.threadCount=10
# 스레드 우선순위
org.quartz.threadPool.threadPriority=5
# ===============================
# ▶ JobStore 설정 (JDBC 기반)
# ===============================
# 트랜잭션 기반 JDBC JobStore
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
# 일반 JDBC용 delegate 클래스 (H2 포함)
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
# 테이블 prefix (SQL DDL과 일치해야 함)
org.quartz.jobStore.tablePrefix=QRTZ_
# 클러스터 환경 지원
org.quartz.jobStore.isClustered=true
# ===============================
# ▶ DataSource 지정
# ===============================
# 사용할 DataSource 이름 지정
org.quartz.jobStore.dataSource=quartz
# ===============================
# ▶ Quartz 전용 DataSource 설정
# ===============================
# 커넥션 풀 provider (HikariCP)
org.quartz.dataSource.quartz.provider=hikaricp
# JDBC 드라이버
org.quartz.dataSource.quartz.driver=org.h2.Driver
# DB 접속 URL
org.quartz.dataSource.quartz.URL=jdbc:h2:tcp://localhost/~/quartz-test
# 사용자 계정
org.quartz.dataSource.quartz.user=sa
# 비밀번호 (없음)
org.quartz.dataSource.quartz.password=
# 최대 커넥션 수
org.quartz.dataSource.quartz.maxConnections=5
3. 🧱 tables_h2.sql 주요 테이블 요약
해당 SQL 파일은 Quartz Scheduler가 사용하는 내부 메타데이터 테이블을 정의한다. 주요 테이블 설명은 다음과 같다.
테이블명 | 설명 |
QRTZ_JOB_DETAILS | 등록된 Job 클래스 및 속성 저장 |
QRTZ_TRIGGERS | 트리거 공통 정보 저장 |
QRTZ_SIMPLE_TRIGGERS | 반복 주기 기반 트리거 설정 |
QRTZ_CRON_TRIGGERS | Cron 표현식 기반 트리거 설정 |
QRTZ_BLOB_TRIGGERS | BLOB 직렬화 트리거 정보 저장 |
QRTZ_CALENDARS | 휴일 캘린더 등 예외일자 정의 |
QRTZ_PAUSED_TRIGGER_GRPS | 일시 중지된 트리거 그룹 목록 |
QRTZ_FIRED_TRIGGERS | 실행 중/실행 이력 기록 |
QRTZ_SCHEDULER_STATE | 각 인스턴스의 상태 추적 (클러스터링 용) |
QRTZ_LOCKS | 트랜잭션 락 및 동시성 제어 |
해당 DDL에는 수많은 외래키 제약조건과 인덱스도 포함되어 있어, 성능 및 안정성을 함께 고려한 구조를 가지고 있다. 이 구조는 Quartz의 클러스터링, 미스파이어 처리, 트리거 우선순위 관리에 중요한 역할을 한다.
✅ 마무리 요약
항목 | 설명 |
application.yml | Spring Boot 설정 및 Quartz 외부 properties 파일 경로 지정 |
quartz.properties | Quartz 스케줄러 세부 구성 (JobStore, ThreadPool, DataSource 등) |
tables_h2.sql | Quartz가 사용하는 메타 테이블 정의 SQL 스크립트 (H2 기준) |
실행 환경 | Spring Boot + H2 DB + JDBC 기반 Quartz + 클러스터링 활성화 구성 |
'Backend > Spring(활용)' 카테고리의 다른 글
SpringBoot 프로젝트 외부 설정(2) - Java 시스템 속성 설정 및 조회 방법 (1) | 2025.05.01 |
---|---|
WAR 배포 방법과 Servlet 기반 Spring Web 프로젝트 구성 방법 (0) | 2025.04.13 |
Spring 기반 Quartz Scheduler 기본 예제 코드(1) - 구조적 설계와 흐름 설명 (0) | 2025.04.03 |
Spring 의존관계 자동 주입(DI) 방식 선택 기준 정리 (1) | 2025.04.01 |
Spring Boot에서 MultipartFile 저장 위치 확인 및 활용 방법 (0) | 2025.02.27 |