본문 바로가기

Spring/공부공부

[Spring] Quartz 스케줄러

 

* Quartz 

Java 기반의 스케줄링 라이브러리.

 

1. 작업 정의 

 Job 인터페이스를 상속받아 MyJob 클래스 구현.  ( org.quartz.Job )

import org.quartz.Job;
import org.quartz.JobExecutionContext;

public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext context) {
        System.out.println("Executing job at: " + java.time.LocalTime.now());
    }
}

 - execute(JobExecutionContext context) : 작업 실행 메서드.

위에서 정의된 작업은 트리거 조건에 따라 Quartz에 의해 실행.

 

 

2. 스케줄러 및 트리거 설정.

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class SchedulerSetup {

    private Scheduler scheduler;

    @PostConstruct
    public void startScheduler() throws SchedulerException {
        // 1. Job 정의
        JobDetail jobDetail = JobBuilder.newJob(MyJob.class) // MyJob은 작업 로직이 구현된 클래스
                .withIdentity("myJob", "group1") // Job의 고유 ID
                .build();

        // 2. Trigger 설정
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1") // Trigger의 고유 ID
                .startNow() // 즉시 시작
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(10) // 10초마다 실행
                        .repeatForever()) // 무한 반복
                .build();

        // 3. Scheduler 생성 및 Job + Trigger 등록
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start(); // 스케줄러 시작
        scheduler.scheduleJob(jobDetail, trigger); // Job과 Trigger 등록
    }
}

   1) Job 정의 : JobDetail 객체를 통해 작업을 Quartz에 등록.

   2) Trigger 정의 : 작업 실행 조건 설정.  (실행시간, 반복 등) 

   3) Scheduler 설정 : Scheduler 객체 생성, JobDetail과 Trigger를 연결, scheduler.start() 호출(스케줄러 실행)

 

** @PostConstruct 어노테이션

애플리케이션이 시작될 때 자동으로 Quartz 스케줄러가 초기화 되고 지정한 작업(MyJob)이 실행된다.

 

 

 


 

 10초 주기로 아래처럼 출력

Executing job at: 12:00:00
Executing job at: 12:00:10
Executing job at: 12:00:20
...

 


 

( 스케줄러 종료 )

scheduler.shutdown(true); // 스케줄러 중지 (현재 실행 중인 작업 완료 후 종료)

 

 

 


 

( Quartz Scheduler )

https://advenoh.tistory.com/51

 

Quartz Job Scheduler란?

Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다. 감사합니다.  http://blog.advenoh.pe.kr1. 들어가며Quartz Job Scheduler에 대한 내용은 여러 시리즈 형식으로 작성을 하

advenoh.tistory.com

 

 

( 스케줄링 & 배치 스케줄링 & Quartz )

https://adjh54.tistory.com/170

 

[Java] 스케줄링 & Spring Boot Quartz 이해하고 적용하기 -1 : 설정 및 간단예시

해당 글에서는 스케줄링에 대해 이해하고 Spring Boot Starter Quartz를 이용하여 스케줄링을 구성하는 간단한 예시를 구성하는 방법을 위한 목적으로 작성한 글입니다. 💡 스케줄러를 이해하기 이전

adjh54.tistory.com