"Spring Schedular를 접하다보면 Batch, Schedular, Quartz 등의 용어들이 나온다. 각각이 의미하는 것은 무엇일까?"
일괄처리를 의미하며, 사용자와 상호작용 없이 여러개의 작업(job)을 미리 정해둔 순서에 따라 도중에 중단 없이 처리하는 것을 의미.
데이터를 일괄처리하기 때문에 사용자에게 빠른 응답이 필요하지 않은 서비스에 주로 사용(단발성 대용량 데이터 처리)
배치가 이뤄지는 시간(특정 시간) 이후에는 자원을 거의 사용X.
예로 들자면, 오전 12:00에 이뤄지는 은행 정산작업에서 배치가 사용된다.
특징
특정한 시간에 등록한 작업을 자동으로 실행 시키는 것을 의미.
Spring에서 제공하는 스케줄러로는 Spring Scheduler, Spring Quartz가 있음.
-- Quartz의 경우 라이브러리 의존성 추가
-- Scheduler의 경우 추가적인 라이브러리 존재X
implementation "org.springframework.boot:spring-boot-starter-quartz"
<!--root-context.xml-->
<!-- 컴포넌트 생성(스캔) : 빈에 등록 -->
<context:component-scan base-package="패키지경로"/>
<!--예시-->
<context:component-scan base-package="com.it.spring.been"/>
//서비스구현코드 : SampleServiceImpl.java
//스케줄러 어노테이션 추가
@Scheduled(cron="규칙")
public void sampeMethod(){ // void type이며, Parameter가 없다.
...
}
// 예시
cron = 0 * * * * ? : 매 분 0초마다 실행
cron = 0-3 * * * * ? : 매분 0초, 1초, 2초, 3초에 실행
cron = 0, 3, 6, * * * * ? : 매분 0초, 3초, 초에 실행
cron = 0/9 * * * * ? : 0초에 시작해 3초마다 실행
cron = * 10/10 * * * ? : 10분에 시작해 10분마다 실행
cron = 0 * ? ? ? ? : 매분 0초마다 시작하며 나머지는 지정X