반응형
주기적으로 외부 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 이후에 수행합니다.
등이 있습니다.
반응형
'Spring' 카테고리의 다른 글
spring boot, docker, docker-compose, nginx 이용해서 무중단 배포하기 (0) | 2021.11.10 |
---|---|
spring boot, docker 컨테이너 내에 민감한 정보(비밀번호) 숨기기 (0) | 2021.11.10 |
Spring에서 gson을 이용하여 중첩 구조 json 스트링을 객체로 변환 (0) | 2021.11.10 |
An invalid character [32] was present in the Cookie value (0) | 2021.11.09 |
Spring Boot CORS 문제 해결하기 (1) | 2021.11.09 |