Spring Schuduler 설정 시 주의 해야 할 점 (Scheduler Thread Pool)

Published on
1 mins read

상황

  • Spring Schuduler가 정상 작동 되지 않음

원인

  • 기존에 돌아가는 Schduler의 갯수는 총 4개 ( 1개는 10초 , 나머지 3개는 60초 )
  • Scheduler의 Thread Pool Size 기본 설정은 1개 이다. 따라서 2개 이상의 작업을 해야할 경우 실행해야 할 쓰레드가 1개 밖에 없기 때문에 작업이 실행되지 않음.

해결

  • Spring Scheduler Thread Pool size 조정
  @Configuration
  public class SchedulerConfig implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
      
      // Thread Pool 설정
      ThreadPoolTaskScheduler threadPool = new ThreadPoolTaskScheduler();  
  
      int threadPoolSize = 3;
      threadPool.setPoolSize(threadPoolSize);
      threadPool.initialize();
          
      taskRegistrar.setTaskScheduler(threadPool);
    }
  }