공부방/Spring

스프링 쿼츠 (Spring Quartz) 스케쥴러에 배치(Batch) 파일 등록하기

박재윤 2013. 7. 5. 09:56

Quartz 스케쥴러에 배치(batch) 파일 등록하기


주기적인 어떤 작업을 할떄 리눅스(Linux)에서는 크론탭(CronTab) 방식을 사용합니다.
하지만 이곳에서는 Spring의 Quartz 스케쥴러 방식을 사용하여 구현하고 있습니다.

Quartz의 핵심인 /WEB-INF/config/applicationContext.xml 작성법은 아래와 같습니다.
  1. 실제 실행될 class 등록
  2. 스케쥴러가 동작하는 주기 설정
  3. 실제로 동작 하도록 설정
  • Simple Type: 주기 시간이 몇초, 몇분 혹은 몇시간 단위로 작동 (이곳 프로젝트와 무관)
  • Cron Type: 리눅스의 CronTab과 같은 동작. 몇월 몇일 몇시에 동작할지 설정 (이 방식 사용)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 <!--1. 실제 실행될 class 등록 -->
    <bean id="cronQuartzJob" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="실제.실행될.class.이름"/>
    </bean>
    
    <!--2. 스케쥴러가 동작하는 주기 설정-->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="cronQuartzJob"/>
             <!-- 매일 새벽 1시에 실행 (24시간 format) -->
        <property name="cronExpression" value="001**?"/>
    </bean>
    
    <!--3. 실제로 동작하도록 설정 -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
            </list>
        </property>
        <property name="quartzProperties">
            <props>
                <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
                <prop key="org.quartz.threadPool.threadCount">5</prop>
                <prop key="org.quartz.threadPool.threadPriority">4</prop>
                <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
                <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
            </props>
        </property>
    </bean>
</beans>

 

 

 

실제 작동할 class 파일

 

1
2
3
4
5
6
7
8
    //QuartzJobBean을 꼭 상속받아야 한다.
public class SimpleQuartzJob extends QuartzJobBean{
    
    @Override
    protected void executeInternal(JobExecutionContext ex)throws JobExecutionException {
        quartzJobService.printLog();
    }    
}

 

출처 : https://m.blog.naver.com/PostView.nhn?blogId=samurae83&logNo=90168082118&proxyReferer=https%3A%2F%2Fwww.google.com%2F