hanker

spring boot(java) - 스케쥴러(Scheduler) 만들기 (1) - quartz 본문

SPRING

spring boot(java) - 스케쥴러(Scheduler) 만들기 (1) - quartz

hanker 2021. 4. 11. 22:04

스케쥴러 만들기 (quartz)

 

우선 Spring boot 프로젝트를 만들고 pom.xmlquartz dependency를 추가한다.

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-quartz</artifactId> 
</dependency>

추가 후 프로젝트를 실행하면 

  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.

  NOT STARTED.

  Currently in standby mode.

  Number of jobs executed: 0

  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.

  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

이런 메시지가 뜨면 정상적으로 적용이 된것이다.

 

그 다음 Job 클래스 파일을 만든다. (com.hanker.hankerbatch.run.HankerJobA.java)

<code>

@Component
public class HankerJobA extends QuartzJobBean {

    private static final Logger log = LoggerFactory.getLogger(HankerJobA.class);

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        log.info("매 시간 실행 될 작업 작성 공간");
    }
}

 

Job 클래스를 만들었고, 이제 Job 클래스를 실행시키기 위해 JobSetting파일을 만들고 설정해준다.

(com.hanker.hankerbatch.conf.JobSetting)

<code>

@Configuration
public class JobSetting {

    @Autowired
    private Scheduler scheduler;

    @PostConstruct
    public void start(){
        JobDetail jobDetail = buildJobDetail(HankerJobA.class, new HashMap());

        try{
            scheduler.scheduleJob(jobDetail, buildJobTrigger("0/20 * * * * ?"));
        } catch(SchedulerException e){
            e.printStackTrace();
        }
    }

    public Trigger buildJobTrigger(String scheduleExp){
        return TriggerBuilder.newTrigger()
                .withSchedule(CronScheduleBuilder.cronSchedule(scheduleExp)).build();
    }

    public JobDetail buildJobDetail(Class job, Map params){
        JobDataMap jobDataMap = new JobDataMap();
        jobDataMap.putAll(params);

        return newJob(job).usingJobData(jobDataMap).build();
    }
}

20초간격으로 실행시키는 Job 스케쥴러를 만들었다.

 

실행시켜보면 

20초 간격으로 실행되는것이 확인된다.

 

 

다음 글은 Job 스케쥴 2개 (JobA, JobB)를 만들어서 특정 조건에 Job 스케쥴(JobA)을 종료시키는 방법에 대해 작성하겠다.

 

hanke-r.tistory.com/102

 

spring boot - 스케쥴러(scheduler) 작업 중지시키기 (2)

기존에 작업했던 스케쥴러 만들기 (1)를 이어서 시작한다. hanke-r.tistory.com/101 SpringBoot - 스케쥴러(Scheduler) 만들기 스케쥴러 만들기 (quartz) 우선 Spring boot 프로젝트를 만들고 pom.xml에 quartz de..

hanke-r.tistory.com