본문 바로가기

카테고리 없음

[spring batch 스프링 배치] batch, cron, scheduler

728x90

https://docs.spring.io/spring-batch/docs/current/reference/html/domain.html#domainLanguageOfBatch

 

The Domain Language of Batch

This section describes stereotypes relating to the concept of a batch job. A Job is an entity that encapsulates an entire batch process. As is common with other Spring projects, a Job is wired together with either an XML configuration file or Java-based co

docs.spring.io

 

 

 

 

 

일배치 = 일반배치 = 일괄작업

데이터를 실시간으로 처리하지 않고 정해진 시간에 한번에 처리하는 작업

 

 

 

 

우선 job을 등록한다

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

 

 

이 안에 job 리스트랑 trigger 리스트가 있다.

 

  <property name="jobDetauls">

    <list>

     여기 여러 개가 올 수 있다.

      <ref bean="[job이름 정해주기]">

    </list>

 

  </property>

  <property name="triggers">

    <list>

     여기 여러 개가 올 수 있다.

트리거를 정해줘야 스케줄러가 배치를 실행한다.

여기가 없으면 실행을 안한다.

      <ref bean="[trigger이름 정해주기]">

    </list>

 

  </property>

 

</bean>

 

 

 

 

 

https://groups.google.com/g/ksug/c/wxVRKTlIn3c

 

spring batch 관련 질문

> > > > > > > > > 음. 잘 이해가 안 가는 부분이 있습니다. > > concurrent false 인 상태에서 현재 매 시 30분에 배치가 돌고 있고, 해당 배치는 3초 정도의 시간이 소요되고 > > 종료됩니다. > > 즉, 쓰레드가

groups.google.com

 

 

 

 

 


Batch

사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것.

- 정기배치: 일, 주, 월과 같이 정해진 기간에 정기적으로 수행

- 이벤트성 배치: 특정 조건을 설정해두고 조건이 충족될 때만 수행

- On-Demand 배치: 사용자 요청 시 수행

 

 

 

 

Batch Scheduler (=Job Scheduler)

일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구.

특정 업무(job)를 원하는 시간에 처리할 수 있도록 지원해 Job Scheduler 라고도 불린다.

 

1. Spring Batch

Spring Source 사와 Accenture 사가 2007년에 공동 개발한 오픈소스 프레임워크

Job
수행할 작업 정의
Job Launcher
실행을 위한 인터페이스
Step
Job 처리를 위한 제어 정보
Job Repository
Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장

 

2. Quartz

일괄 처리를 위한 다양한 기능을 제공하는 오픈소스 라이브러리.

- 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공한다.

Scheduler
실행 환경 관리
Job
수행할 작업 정의
JobDetail
Job의 상세 정보
Trigger
Job의 실행 스케줄 정의

 

3. Cron

- 리눅스에서 일반적으로 cron 데몬이 주기적인 작업 실행을 처리한다. (cron 설정 파일은 cron table -줄여서 crontab-)
- 유닉스 계열 운영체제 시스템에서 정해진 시간에 주기적으로 작업을 수행하기 위한 데몬 프로세스
- 정기적인 작업처리를 위해 소프트웨어를 실행하도록 환경을 설정하는 job scheduer 성격의 demon process
- cron 스케줄러의 정규 표현식이 있다.

 

 

cron 표현식

 * : 모든 값을 뜻합니다.

 ? : 특정한 값이 없음을 뜻합니다. 

 - : 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현

 , : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI 

 / : 시작시간 / 단위  (예) 0분부터 매 5분 0/5

 L : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일)

 W : 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음

 # : 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일

 

 

 

● Cron Maker : http://www.cronmaker.com/

 

cron 표현식을 생성해줍니다

 

 

 

 

예시 1) 30 1 * * * /root/com.sh

매월 매일 1시 30분에 com.sh를 실행한다.

예시 2) 30 */3 * * * /root/com.sh

매월 매일 0:30부터 3시간마다 com.sh를 실행한다.

(0:30, 3:30, 6:30 ... 21:30)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://m.blog.naver.com/gluestuck/221906741874

 

배치 프로그램(Batch Program), 배치 스케줄러(Batch Scheduler

안녕하세요! 양토리입니다. 오늘은 배치 프로그램(Batch Program)과 배치 스케줄러(Batch Scheduler)에...

blog.naver.com

 

https://zamezzz.tistory.com/197

 

[Cron] 크론(cron) 표현식 정리

■ Cron (크론) cron이란? 유닉스 계열의 잡 스케줄러 ● Cron 표현식 - 필드 Cron 스케줄러의 정규 표현식입니다. 7개의 각 필드로 구성되어 있으며, 각 필드의 내용은 아래와 같습니다. 자세한 설명은

zamezzz.tistory.com

 

https://spring.io/guides/gs/batch-processing/

 

Creating a Batch Service

this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team

spring.io