반응형

주기적으로 외부 API와 통신을 해야했는데, 스프링에서 스케줄링을 쉽게 하는 방법이 있었습니다.

 

@Configuration
@EnableScheduling
public class SchedulingConfig implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(1);
        scheduler.initialize();

        taskRegistrar.setTaskScheduler(scheduler);
    }
}

먼저 설정 클래스를 만들어줍니다. @EnableScheduling 어노테이션을 달아주면 스케줄링을 사용할 수 있습니다.

setPoolSize는 가용할 스레드의 개수를 지정합니다.

 

 

@Component
@RequiredArgsConstructor
public class Scheduler{
    @Scheduled(fixedDelay = 1000L * 60)
    public void doSomething() {
        // do something
    }
}

메소드에 @Scheduled 어노테이션을 달아주면, 스케줄링을 수행합니다.

줄 수 있는 옵션 값으로는,

@Scheduled(cron = "0 * * * * MON-FRI")
"* * * * * *" 이런 식으로 6개의 자리에 second, minute, hour, day of month, day of week를 달아줄 수 있습니다.

@Scheduled(fixedDelay = 1000L)
이전 작업이 끝나고 1000 milliseconds 이후에 수행합니다.

@Scheduled(fixedRate = 1000L)
이전 작업이 시작하고 1000 milliseconds 이후에 수행합니다.

등이 있습니다.

반응형

+ Recent posts