전자정부프레임워크에서 배치 스케줄러는 정기적인 작업을 자동으로 실행할 수 있는 기능입니다. 배치 스케줄러는 대량의 데이터를 처리하거나 정해진 시간에 특정 작업을 수행하는 데 유용합니다. 오늘은 Spring의 Quartz 스케줄러를 활용하여 배치 작업을 설정하고 실행하는 방법을 다룹니다.
1. 배치 스케줄러란?
배치 스케줄러는 일정 시간 간격이나 특정 조건에 따라 작업을 자동으로 실행하는 프로그램입니다.
예를 들어, 매일 자정에 데이터를 백업하거나 매주 특정 요일에 이메일을 발송하는 작업을 수행할 수 있습니다.
전자정부프레임워크는 Quartz를 기본적으로 지원하며, 이를 통해 강력한 배치 관리 기능을 제공합니다.
2. Quartz 의존성 추가
2-1. Maven 의존성 설정
pom.xml에 다음 내용을 추가합니다.
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
2-2. Spring Boot Starter 추가
Spring Boot 환경에서는 다음 의존성도 추가합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
3. 스케줄러 구성
3-1. 배치 작업(Job) 정의
Job 인터페이스를 구현하여 수행할 작업을 정의합니다.
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyBatchJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("스케줄 작업 실행: " + context.getFireTime());
// 실제 작업 로직 작성
}
}
3-2. 스케줄러 설정
스케줄러를 설정하는 Configuration 클래스를 작성합니다.
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QuartzConfig {
@Bean
public JobDetail jobDetail() {
return JobBuilder.newJob(MyBatchJob.class)
.withIdentity("myBatchJob")
.storeDurably()
.build();
}
@Bean
public Trigger trigger(JobDetail jobDetail) {
return TriggerBuilder.newTrigger()
.forJob(jobDetail)
.withIdentity("myBatchTrigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 * * * ?")) // 매 5분마다 실행
.build();
}
}
- 0 0/5 * * * ?: 매 5분마다 실행하는 크론 표현식입니다.
크론 표현식을 변경하여 원하는 스케줄을 설정할 수 있습니다.
4. 실행 및 결과 확인
4-1. 애플리케이션 실행
Spring Boot 애플리케이션을 실행하면 설정한 배치 작업이 정해진 시간 간격에 따라 실행됩니다.
4-2. 콘솔 출력 확인
배치 작업이 실행되면 콘솔에 다음과 같은 메시지가 출력됩니다.
스케줄 작업 실행: 2024-12-23 10:00:00
스케줄 작업 실행: 2024-12-23 10:05:00
...
5. 배치 작업에 로직 추가하기
배치 작업에 데이터베이스 작업이나 파일 처리 로직을 추가할 수 있습니다.
예: 데이터베이스 정리 작업
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("데이터베이스 정리 작업 시작");
// 데이터 삭제 또는 업데이트 로직 추가
System.out.println("데이터베이스 정리 작업 완료");
}
6. 크론 표현식 참고
- 0 0 0 * * ?: 매일 자정 실행
- 0 0 12 ? * MON-FRI: 월~금 매일 정오 실행
- 0 0/30 * * * ?: 매 30분마다 실행
크론 표현식 생성기를 활용해 복잡한 표현식을 쉽게 생성할 수 있습니다.
7. 배치 모니터링 및 관리
Quartz는 관리 인터페이스를 통해 작업을 모니터링할 수 있습니다. 이를 활용하면 배치 작업의 상태를 확인하거나 작업을 동적으로 수정할 수 있습니다.
8. 마무리
전자정부프레임워크 기반 애플리케이션에서 Quartz를 활용한 배치 스케줄러 구현을 살펴보았습니다. 배치 작업은 데이터를 자동화하고 시간과 비용을 절약하는 데 큰 도움이 됩니다. 다음 단계에서는 배치 로그 관리와 실패 시 재시도 처리에 대해 다룰 예정입니다.
'개발 > 전자정부프레임워크' 카테고리의 다른 글
전자정부프레임워크에서 API 보안 적용하기 (1) | 2024.12.27 |
---|---|
전자정부프레임워크에서 RESTful API 구현하기 (0) | 2024.12.27 |
전자정부프레임워크 기반 파일 암호화 및 복호화 (0) | 2024.12.27 |
전자정부프레임워크 기반 로그인 인증 처리 (0) | 2024.12.27 |
파일 업로드 및 다운로드 구현 (0) | 2024.12.27 |