Schedule 기능 켜기

자바 설정(Java Configuration) 관련 클래스에 @EnableScheduling 어노테이션을 추가하면 기능 사용가능

@SpringBootApplication
@EnableScheduling
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}

Thread Pool 설정

기본적으로 모든 @Scheduled 작업은 Spring에 의해 생성된 한 개의 스레드 풀에서 실행된다. 그렇기 때문에 하나의 Scheduled가 돌고 있다면 그것이 다 끝나야 다음 Scheduled가 실행되는 문제가 있다.

이 때문에 Thread Pool 설정은 해주어야하며 방법은 다음과 같다

// SchedulerConfig.java 생성
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();

        threadPoolTaskScheduler.setPoolSize(10);
        threadPoolTaskScheduler.setThreadNamePrefix("my-scheduled-task-pool-");
        threadPoolTaskScheduler.initialize();

        scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
    }
}