JAVA

Quartz 스케줄러 DB 연동 / 관리

하늘색도화지 2020. 5. 14. 11:02
728x90

쿼츠 스케줄러

Spring 배치

 

- quartz.properties 설정하여 클래스패스(src/main/resource/quartz) 상에 위치

org.quartz.scheduler.instanceName = innoquartz-scheduler 
org.quartz.threadPool.threadCount = 10 
org.quartz.jobStore.isClustered = false 
#스케줄을 DB에 저장관리하기 위해서 설정 
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

(db를 사용하기위한 코딩-쿼츠 스케줄러)

- Quartz JOBStore를 위해서는 Database에 QuartzJOB 관련된 스키마와 테이블이 생성되어 있어야 한다.

배포판을 내려받아 압축을 풀어보면 docs/dbTables 디렉토리안에 데이터베이스별로 DB 초기화 스크립트가 포함되어 있어 이를 실행해주면 이후에는 Quartz의 SchedulerFactoryBean 을 설정해줄 때 `DataSource`를 주입해주면 알아서 해당 데이터베이스에 정보를 넣고 빼고함

 

context-schedul.xml

<bean id="smsInfoReceiverScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="dataSource" ref="dataSource"/>
</bean>

 


CRON 작업시 5개의 테이블에 데이터가 들어갑니다.

QRTZ_FIRED_TRIGGERS;
QRTZ_TRIGGERS;
QRTZ_LOCKS;
QRTZ_CRON_TRIGGERS;
QRTZ_JOB_DETAILS;

 

나머지 테이블에는 필수키만 넣으시고 QRTZ_TRIGGERS 테이블의 NEXT_FIRE_TIME에 다음에 실행될 시간을 UNIX시간 변환하여 넣어주고 MISFIRE_INSTR = '0' 을 넣어주시면 서버 대리지 않고 스케줄을 관리 가능합니다.

ex) 2020년 05월 14일 11시 11분 = 1589422260000

 

728x90