@Schedule로 주기적으로 서비스 호출하기

Kyle_Kim·2023년 2월 16일
0

스프링에서는 @Scheduled 어노테이션을 사용해서 주기적인 작업을 진행할 수 있다. 예를 들어 매일 아침마다 미정산 고객에게 결제를 시도하기, 일요일마다 고객에서 push 메세지 보내기 등을 할 수 있다.

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduleTasks {
    
    @Scheduled(fixedDelay = 1000)
    public void firstTask() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date now = new Date();
        String strDate = sdf.format(now);
        System.out.println("현재시간: " + strDate);
    }
}

위에서 부터 차례대로 코드를 살펴보자. ScheduleTasks 클래스 선언 위에 @Component 어노테이션을 붙여서 해당 클래스를 스프링이 빈으로 인식할 수 있도록 한다. 클래스 내부에는 현재시간을 출력하는 firstTask() 메소드가 존재한다. firstTask() 메소드 위에는 @Scheduled(fixedDelay = 1000)라고하는 어노테이션이 존재한다. 이는 1초(1000ms)에 한 번 메소드를 실행한다는 의미한다.

fixedDelay 옵션은 이전 작업이 끝난 시점부터 x밀리초 이후마다 작업이 실행된다.

fixedRate 옵션은 이전 작업이 수행되기 시작한 시점부터 x밀리초 이후마다 작업이 실행된다.

profile
Make Things Right

0개의 댓글