Spring Schedular

개발자·2024년 2월 4일
0
post-thumbnail

Spring Schedular는 Spring이 제공하는 Schedular이다.

Schedular란?
특정 시간에 예약된 작업을 실행시키는 것으로 Spring Schedular, Quartz 등이 있다.
참고) Spring Batch : 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단 없이 처리하는 것이다.

사용 방법

  1. 메인 클래스에 @EnableScheduling 어노테이션을 추가해 스케줄링을 활성화해준다.
    Spring이 제공하는 기능이므로 따로 의존성을 추가해줄 필요 없이 사용 가능하다.
@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {

	public static void main(String[] args) {
		SpringApplication.run(SchedulingTasksApplication.class);
	}
}
  1. 예약된 작업을 생성한다.
    이 때, 해당 클래스를 빈으로 등록해야 한다. ex) @Component, @Service 등
@Slf4j
@Component
public class ScheduledTasks {

	@Scheduled(fixedRate = 5000)
	public void run() {
		log.info("Scheduler Test");
	}
}

속성

fixedRate 외에도 다양한 속성을 설정할 수 있다.

  • fixedDelay : 이전 작업이 종료된 시점으로부터 정의된 시간이 지난 후 작업을 실행한다. milliseconds 단위로 설정
    즉, 작업 수행을 마친 후 정의된 시간이 지난 후에 작업을 실행한다.
  • fixedRate : 이전 작업이 시작된 시점으로부터 정의된 시간만큼 지난 후 작업을 실행한다. milliseconds 단위로 설정
    즉, 작업 수행 시간과 상관 없이 정의된 시간이 지난 후에 작업을 실행한다.
  • cron : cron 표현식을 통해 작업 실행 시간을 정의한다.
    ex) @Scheduled(cron = "0 0 0 * * *") : 매일 오전 12:00:00에 작업 실행

참고) 시스템의 인스턴스가 여러 개인 경우 모든 인스턴스마다 스케줄링 작업이 중복 실행될 수 있다. 이런 경우 ShedLock을 통해 한 번만 실행되도록 할 수 있다.

Ref.

https://spring.io/guides/gs/scheduling-tasks/
https://dev-coco.tistory.com/176
https://king-ja.tistory.com/81

profile
log.info("공부 기록 블로9")

0개의 댓글