[java] Quartz Scheduler로 주기적인 데이터 처리하기

많은 애플리케이션에서 주기적으로 실행되어야 하는 작업을 처리해야 할 때가 있습니다. 이러한 작업을 처리하기 위해 Quartz Scheduler라는 유용한 라이브러리를 사용할 수 있습니다. Quartz Scheduler는 Java 애플리케이션에서 스케줄링과 관련된 작업을 수행하기 위한 강력한 기능을 제공합니다.

1. Quartz Scheduler 라이브러리 추가

Quartz Scheduler를 사용하기 위해 먼저 Maven 또는 Gradle 등의 빌드 도구를 사용하여 프로젝트에 Quartz 라이브러리를 추가해야 합니다. 다음은 Maven을 사용하는 경우 pom.xml 파일에 추가해야 하는 의존성입니다.

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

2. Job 클래스 작성

Quartz Scheduler에서 실행되어야 하는 작업은 Job 클래스로 표현됩니다. 다음은 주기적으로 실행되어야 하는 작업을 처리하기 위한 예제 Job 클래스입니다.

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

public class MyJob implements Job {

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    // 작업을 수행할 코드 작성
    System.out.println("주기적인 작업을 실행합니다.");
  }
}

3. Scheduler 생성 및 Job 등록

Scheduler는 Job을 스케줄링하고 실행하는 역할을 합니다. 아래 코드는 Scheduler를 생성하고 이전에 작성한 Job 클래스를 등록하는 예제입니다.

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

public class SchedulerExample {

  public static void main(String[] args) throws SchedulerException {
    // Scheduler 생성
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // JobDetail 생성
    JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
        .withIdentity("myJob", "group1")
        .build();

    // Trigger 생성 - 매 5초마다 실행
    Trigger trigger = TriggerBuilder.newTrigger()
        .withIdentity("myTrigger", "group1")
        .startNow()
        .withSchedule(SimpleScheduleBuilder.simpleSchedule()
            .withIntervalInSeconds(5)
            .repeatForever())
        .build();

    // Job과 Trigger를 Scheduler에 등록
    scheduler.scheduleJob(jobDetail, trigger);

    // Scheduler 실행
    scheduler.start();
  }
}

위 예제에서는 매 5초마다 MyJob이라는 Job이 실행되도록 설정했습니다.

4. 실행 결과 확인

Scheduler를 실행하여 주기적인 작업이 실행되는지 확인할 수 있습니다. 실행 결과는 콘솔에 출력됩니다.

주기적인 작업을 실행합니다.
주기적인 작업을 실행합니다.
주기적인 작업을 실행합니다.
...

결론

Quartz Scheduler를 사용하면 Java 애플리케이션에서 주기적인 작업을 처리할 수 있습니다. Scheduler를 생성하고 Job을 등록하여 필요한 작업을 설정할 수 있습니다. 주기적인 작업을 처리해야 하는 애플리케이션이 있다면, Quartz Scheduler를 활용해 보세요.

참고 자료