[java] Quartz Scheduler와 데이터베이스 연동하기

목차

Quartz Scheduler란?

Quartz Scheduler는 Java 애플리케이션의 작업 스케줄링을 위한 오픈 소스 라이브러리입니다. 주어진 일정에 따라 작업을 실행하고 관리합니다. 이를 통해 Java 애플리케이션에서 크론 작업, 주기적인 배치 작업 등을 손쉽게 처리할 수 있습니다.

데이터베이스 연동 설정

Quartz Scheduler를 사용하여 작업을 스케줄링하는 경우, 데이터베이스를 사용하여 작업 정보를 저장하고 관리할 수 있습니다. 아래의 설정을 통해 데이터베이스와의 연동을 설정할 수 있습니다.

Properties props = new Properties();
props.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate");
props.put("org.quartz.jobStore.dataSource", "myDataSource");
props.put("org.quartz.dataSource.myDataSource.driver", "org.postgresql.Driver");
props.put("org.quartz.dataSource.myDataSource.URL", "jdbc:postgresql://localhost:5432/mydb");
props.put("org.quartz.dataSource.myDataSource.user", "myuser");
props.put("org.quartz.dataSource.myDataSource.password", "mypassword");

StdSchedulerFactory factory = new StdSchedulerFactory(props);
Scheduler scheduler = factory.getScheduler();

위의 예시는 PostgreSQL 데이터베이스와의 연동을 설정하는 예시입니다. 다른 데이터베이스를 사용하는 경우, 해당 데이터베이스에 맞는 드라이버 클래스와 데이터베이스 URL을 사용하시면 됩니다.

Job 클래스 작성

Quartz Scheduler에서 실행될 작업은 Job 클래스로 정의되어야 합니다. Job 클래스는 org.quartz.Job 인터페이스를 구현해야 하며, execute() 메소드에 작업 내용을 구현해야 합니다.

public class MyJob implements Job {

    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 실행될 작업 내용 작성
    }
}

execute() 메소드 내부에는 원하는 작업을 구현하면 됩니다.

데이터베이스 테이블 생성

Quartz Scheduler와 데이터베이스를 연동하기 위해서는 해당 작업 정보를 저장할 테이블을 미리 생성해야 합니다. Quartz 라이브러리는 quartz_tables.sql이라는 스크립트 파일을 제공합니다. 해당 스크립트 파일을 실행하여 테이블을 생성할 수 있습니다.

데이터베이스 연동 확인

위의 설정과 작업 클래스, 테이블 생성이 완료되면 Quartz Scheduler를 실행하여 데이터베이스와의 연동을 확인할 수 있습니다.

scheduler.start();

이제 작업이 정상적으로 스케줄되고 실행되는지 데이터베이스를 통해 확인하실 수 있습니다.

참고 자료