본문 바로가기
Java

[Java] 스케줄링 라이브러리, Quartz 사용해 Hello world 출력해보기

by teamnova 2023. 6. 16.
728x90

Quartz는 Java 기반의 오픈 소스 스케줄러 라이브러리입니다. Quartz를 사용하여 Java 애플리케이션에서 스케줄링 작업을 예약할 수 있습니다. 아래는 Quartz를 사용하여 간단한 스케줄링 작업을 설정하는 Java 코드 예제입니다.

먼저, Quartz 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 아래의 의존성을 추가하면 됩니다.

 

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

 

다음은 Quartz를 사용하여 10초마다 Hello World를 출력하는 Job을 스케줄링하는 예제입니다.

 

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class HelloWorldJob implements Job {
    
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Hello World!");
    }
    
    public static void main(String[] args) {
        try {
            // 스케줄러 팩토리 생성
            SchedulerFactory schedulerFactory = new StdSchedulerFactory();

            // 스케줄러 인스턴스 생성
            Scheduler scheduler = schedulerFactory.getScheduler();

            // Job 생성
            JobDetail job = JobBuilder.newJob(HelloWorldJob.class).withIdentity("job1", "group1").build();

            // Trigger 생성 (10초마다 반복)
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
                    .startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever())
                    .build();

            // 스케줄러에 Job과 Trigger 추가
            scheduler.scheduleJob(job, trigger);

            // 스케줄러 실행
            scheduler.start();
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
}

 

위 코드에서는 HelloWorldJob 클래스를 정의하여 execute() 메서드에서 "Hello World!"를 출력합니다. SchedulerFactory 클래스를 사용하여 스케줄러 인스턴스를 생성하고, JobBuilder 클래스와 TriggerBuilder 클래스를 사용하여 Job과 Trigger를 생성합니다. scheduler.scheduleJob() 메서드를 사용하여 Job과 Trigger를 스케줄러에 추가하고, scheduler.start() 메서드를 사용하여 스케줄러를 실행합니다.

이 코드는 Quartz를 사용한 스케줄링의 간단한 예제일 뿐이며, Quartz의 다양한 기능을 활용하여 보다 복잡한 스케줄링 작업을 수행할 수 있습니다.