반응형
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Netty
- Hibernate
- KAFKA
- docker-compose
- vue.js
- grafana
- docker compose mysql
- Airflow
- cassandra
- Docker Compose
- spring boot
- Selenium
- coalesce
- WebLogic
- spring boot redis
- Redis Sentinel
- jmeter
- argo cd
- JPA
- mybatis
- MySQL
- Spring Open Feign
- docker
- spring cloud
- QueryDSL
- weblogic 10
- redis
- ChannelPipeline
- RabbitMQ
- netflix oss
Archives
- Today
- Total
IT.FARMER
Spring Batch 특징 본문
반응형
2020/05/26 - [Spring/Spring Batch] - Spring Batch 특징
2020/05/26 - [Spring/Spring Batch] - Spring batch 기본 흐름 (tasklet, next flow)
2020/05/26 - [Spring/Spring Batch] - Spring Batch 분기/decide
2020/05/26 - [Spring/Spring Batch] - Spring Batch JobParameter
2020/05/26 - [Spring/Spring Batch] - Spring Batch chunk 지향 방식
- Spring Batch 특징
- 대용량 처리 / 복잡한 처리를 위한 프로젝트 (로그 처리, 정산작업등)
- 특정시간에 자동으로 실행되거나 특정 요청으로 실행 가능 함.
Spring batch Domain Object Definitions
- JobLauncher : Batch Job을 실행 시키는 역할 을 수행 Job과 Parameter를 받아서 실행하며 JobExecution을 반환한다.
- job : 업무의 단위, 실행시킬 작업의 단위 묶음 Job과 step은 1..n 으로 구성 할 수있다.
- step : 실제로 Job 안에서 해야할 업무(TASK)를 해야 하는 단위
- ItemReader : 플랫 파일이나, DB 에서 데이터를 읽어 드림
- ItemProcess : 읽어 드린 파일을 가공 할때
- ItemWriter : 가공한 파일을 최종적으로 저장(Output) 할때
- JobRepository
- JobRepository 는 JobLanuchar, job 및 step 구현체에 대한 CRUD 오퍼레이션 제공과 Job,JobExecution, StepExecution 과 관련된 모든 정보가 저장되는 곳이며. In-memory 와 db 저장 방법 두가지가 있다.
- Tasklet
- Step을 정의할때 input/output processing이 없는 경우에 사용되는 인터 페이스
- Tasklet은 Step 안에서 단일로 수행될 커스텀한 기능을 선언할 때 사용함
이처럼 Job 안에는 여러가지의 Step 이존재 하고 Step 에는 [tasklet], [Read,Prodess,Writer] 의 여러 묶음이 존재 한다.
Spring Batch Layered Architecure
- Run Tire : Scheduling 과 Application 을 담당 함
- JobTire : 전체적인 Job 실행을 담당한다. Job내의 Step 들을 순차적으로 수행
- Application Tire : Job을 실행하는데 필요한 컴포넌트들로 구성됨
- Data Tire : DataBase, File 등 물리적 데이터 소스와 결합이 이루어 지는 영역 (Output)
<그림 ....>
JobParameter
Batch를 실행함에 있어 파라미터를 넘겨주어 운영시 언제든지 데이터를 처리 해야 하는경우가 있다. 이때 JobParmeter를 사용 하도록 하며 @StepScope / @JobScope 에대해 간략하게 알아보자
- @JobScope : Step 선언문에서 사용 가능 함.
- @StepScope : Tasklet 이나, ItemReader,ItemWriter,ItemProcess 에서만 사용가능
JobLanucher
외부에서 Job을 실행 함 Http Parameter로 데이터를 받아 실행 해도 되며, 어떠한 형태로도 가능 하기때문에 원하는 때 언제나 Job을 실행 할 수 있다.
@SpringBootApplication
@EnableBatchProcessing
@Slf4j
public class CjAudienceBatchApplication {
@Autowired
JobLauncher jobLauncher;
@Autowired
@Qualifier("importAudienceJob")
Job importAudienceJob;
public static void main(String[] args) throws Exception {
int exitCode = SpringApplication.exit(SpringApplication.run(CjAudienceBatchApplication.class));
jobComponent.manualJob(args[0], args[1], args[2]);
System.exit(exitCode);
}
/**
* 수동 실행
*
* @param jobId
* @param pathToFile
* @param fileName
* @throws JobParametersInvalidException
* @throws JobExecutionAlreadyRunningException
* @throws JobRestartException
* @throws JobInstanceAlreadyCompleteException
*/
public void manualJob(String jobId, String pathToFile, String fileName) throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
JobParameters params = new JobParametersBuilder()
.addString("JobID", jobId + String.valueOf(System.currentTimeMillis()))
.addString("pathToFile", pathToFile)
.addString("fileName", fileName)
.toJobParameters();
jobLauncher.run(importAudienceJob, params);
}
}
반응형
'Spring > Spring Batch' 카테고리의 다른 글
Spring Batch chunk 지향 방식 (0) | 2020.05.26 |
---|---|
Spring Batch JobParameter (0) | 2020.05.26 |
Spring Batch 분기/decide (0) | 2020.05.26 |
Spring batch 기본 흐름 (tasklet, next flow) (0) | 2020.05.26 |