스프링 + quzrtz로 스케줄 관리

 

Spring 기반으로 반복적인 일을 하고 싶을떄 사용한다.

 

적용 범위

1. 특정 요일 특정 시간때 해당 프로세스를 실행 하고 싶을떄

2. 특정 초 (5초단위)마다 프로세스를 생항할떄.

 

적용

 maven

 <!-- Quartz framework -->
  <dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
   <version>1.8.6</version>
  </dependency>

개발  -  QuartzJobBean  상속받아 executeInternal 메소드를 제정의 해준다.

public class JobSchedulerOpenAPI extends QuartzJobBean {
 private Logger logger = Logger.getLogger(this.getClass());
 protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
  
  logger.info("###################### 시작  ########################");
  //개발 할 내용
  logger.info("###################### 종료   ########################");
  
 }
}
 

 

스프링 XML 등록  ( 주기적으로 10초마다 실행 예 )

 

 <!-- 빈을 등록한다 -->

<bean name="jobSchedulerOpenAPI"  class="org.springframework.scheduling.quartz.JobDetailBean">

   <!-- 개발한 클레스 -->
  <property name="jobClass"   value="com.wf.weather.quartz. job.JobSchedulerOpenAPI" />
 </bean> 

 

 

<!-- 방법 1 -->
 <bean id="cronTriggerOpenApi" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <!-- 시작시 실생 되고 주기적으로 될떄 SimpleTriggerBean 을 사용한다 -->
  <property name="jobDetail" ref="jobSchedulerOpenAPI" />
  <property name="startDelay" value="1000"/>
  <property name="repeatInterval" value="900000"/>
 </bean>

 

 

<!-- 방법2 -->

<bean name="jobSchedulerFeedback"  class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass"   value="com.wf.weather.quartz.job.obSchedulerFeedback" />
 </bean> 
 <bean id="cronTriggerOpenApi" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="jobSchedulerOpenAPI" />
  <property name="cronExpression" value="0 10 2 * * ?" />
 </bean>

 

 

<!-- Scheduler -->
 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="jobDetails">
   <list>
       <ref bean="jobSchedulerOpenAPI" />
       </list>
  </property>  
  <property name="triggers">
   <list>
        <ref bean="cronTriggerOpenApi" />
       </list>
  </property>  
 </bean>

 

 

 

 

설명

방법 1은 org.springframework.scheduling.quartz.SimpleTriggerBean 을 이용하여 프로세스를 실행한다 .

startDelay 시작후 몇초후 부터 실행 될 것인지 확인

 

방법 2은 org.springframework.scheduling.quartz.JobDetailBean을 이용하여 특정 시간 날짜 등을 지정하여 처리하는 방법

cronExpression 설정 방법은 아래 참고

--> http://dev.anyframejava.org/docs/anyframe/plugin/scheduling/4.5.3/reference/html/ch03.html

 

 

 

스케줄 처리 부는 org.springframework.scheduling.quartz.SchedulerFactoryBean  에서 처리한다.