* 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 )
https://adjh54.tistory.com/170
'Spring > 공부공부' 카테고리의 다른 글
[Spring Boot / IntelliJ] bootJar & MANIFEST.MF (0) | 2024.12.22 |
---|---|
[Spring Boot] @SpringBootApplication (0) | 2024.11.27 |
[Spring] @Async 비동기 처리 ( SimpleAsyncTaskExecutor ) (0) | 2024.10.24 |
[Spring] 뷰 리졸버(View Resolver) 설정 (https 오류) (0) | 2024.09.25 |
[Spring / HTTP] ResponseEntity (0) | 2024.06.20 |