JAVA

배치(Batch) 프로그램으로 일괄 처리하는 방법

배치(Batch) 프로그램으로 일괄 처리하는 방법

배치(Batch)란

배치란 일괄처리라는 의미로 클라이언트와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것을 말한다. 이는 OS의 crontab 기능을 시스템 콜하여 사용한다. @Scheduled 어노테이션을 사용하여 이 기능을 스프링에서 사용할 수 있게 만든다.

시스템 콜(System Call)

시스템 호출 또는 시스템 콜, 간단히 시스콜은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 위키백과

 

배치 프로그램 예제

@Scheduled 사용법

@Scheduled(cron = "* 22 8 * * *", zone = "Asia/Seoul")

시간 설정하기

cron : 지정한 시간에 작동하게 만든다.
fixedDelay : 지정한 시간마다 작동하게 만든다.

zone : 기준이 되는 시간을 설정할 수 있다.

작업 스케줄 설정

* * * * * *

* 은 앞에서부터 초(秒), 분(分), 시(時), 일(日), 주(週), 월(月)을 의미한다.

  • 0 * * * * * 1분 마다 실행
  • 0 30 * * * * 매시 30분마다 실행
  • 0 0 0 10 * * 매월 10일 0시 0분에 실행
  • * * * 10 * * 매월 10일에 1분 마다 실행
  • 0 0 0 10 4 * 매년 4월 10일에 0시 0분에 실행
  • 0 0 0 * * 1 매주 월요일 0시 0분에 실행 (요일의 숫자표현: 일0 월1 화2 수3 목4 금5 토6)
  • 0 0 * * * 1 매주 월요일 매시 0분에 실행

 

배치 프로그램 예제

8시 22분에 1초마다 실행하는 배치 프로그램
@Component
public class BatchTest {
  int num = 1;
  
  // 초 분 시 일 월 주
  @Scheduled(cron = "* 22 8 * * *", zone = "Asia/Seoul")
  public void testCount() {
    System.out.println("숫자 카운트 : " +num);
    num++;
  }
}
<결과화면>
console
최신글