개발자의 길

[java]스프링 쿼츠 (Spring Quartz) 스케쥴러에 배치(Batch) 파일 등록하기 [출처] 스프링 쿼츠 (Spring Quartz) 스케쥴러에 배치(Batch) 파일 등록하기|작성자 비전공 개발자 본문

4. JAVA

[java]스프링 쿼츠 (Spring Quartz) 스케쥴러에 배치(Batch) 파일 등록하기 [출처] 스프링 쿼츠 (Spring Quartz) 스케쥴러에 배치(Batch) 파일 등록하기|작성자 비전공 개발자

자르르 2014. 2. 14. 15:30


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();
    }    




이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공유하기 링크
Comments