일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 키클락
- TypeScript
- 디자인패턴
- JPA
- Spring Boot Actuator
- Resilinece4j
- 알고리즘
- 디자인 패턴
- MSA
- 사가 패턴
- Action Pattern
- 체인 패턴
- spring cloud
- spring batch
- java 정렬
- Java
- Parallel Old GC
- 멀티스레드
- The law of Demeter
- 스레드
- thread
- zipkin
- Transaction Pattern
- saga pattern
- 타입스크립트
- 생산자 소비자 패턴
- 배치
- Serial GC
- 스프링 배치
- Spring Cloud Netfilx Eureka
- Today
- Total
목록Backend/Spring Batch (8)
PSD( Private-Self-Development )
JobExplorer( Job 실행 정보 ) JobRepository 의 readOnly 버전 실행 중인 Job 의 실행 정보인 JobExecution 또는 Step 의 실행 정보인 StepExecution 을 조회할 수 있다. [JobExplorer] List getJobInstances(String jobName, int start, int count) // start 인덱스부터 count만큼의 JobInstances을 얻는다. JobExecution getJobExecution(Long executionId) // JobExecutionId 를 이용하여 JobExecutions 을 얻는다 StepExecution getStepExecution(Long jobExecutionId, Long stepE..
스프링 배치 또한 테스트 코드 작성을 지원한다. 알아보자! 1. 의존성 추가 org.springframework.batch spring-batch-test 2. @SpringBatchTest 어노테이션 추가 및 테스트 작성 자동으로 ApplicationContext에 테스트에 필요한 여러 유틸 Bean을 등록해주는 어노테이션 JobLauncherTestUtils launchJob(), launchStep() 과 같은 스프링 배치 테스트에 필요한 유틸성 메소드 지원 JobRepositoryTestUtils JobRepository 를 이용하여 JobExecution 을 생성 및 삭제하는 메소드 지원 StepScopeTestExecutionListener @StepScope 컨텍스트를 생성해 주며 해당 컨텍..
Spring Batch 는 프로세스 간에 다양한 이벤트 리스너 를 제공한다. 이를 공부해보자! JobExecutionListener, StepExecutionListener Job/Step 의 실행 전/후 이벤트 할당 Job/Step 의 성공 여부와 상관없이 호출된다. 성공 실패 여부는 JobExecution/StepExecution을 통해 알 수 있다. 예시 public Job job() { return jobBuilderFactory.get("job") .start(step()) .next(flow()) .listener(JobExecutionListener) .listener(Object) // 어노테이션 방식 .build(); } public Step step() { return stepBuild..
멀티 스레드? 특정 작업을 처리하는 스레드가 단일이 아닌 여래 개 일 경우 멀티 스레드 라고 한다. 일반적으로 복잡한 처리나 대용량 데이터 처리를 할 때, 소요 시간 및 성능상의 이점을 위해 사용한다. 단, 데이터 동기화 에 신경 써줘야 하기 때문에 신중히 사용해야 한다. Spring Batch 에서의 멀티 스레드 마찬가지로 기본적으로 단일 스레드 방식으로 작업을 처리한다. 멀티 스레드를 위한 비동기 처리 및 Scale out 기능을 제공한다. Local( 서버 내부적 ) 과 Remote( 외부 서버적 ) 처리 지원 멀티 스레드 처리 종류 1. AsyncItemProcessor / AsyncItemWriter ItemProcessor 에게 별도의 스레드가 할당되어 작업을 처리하는 방식 Step 내부 It..
1. Repeat 특정 조건이 충족 혹은 충족 전까지 Job 또는 Step 을 반복하도록 구성 가능 하다. 스프링 배치에서는 Step, Chunk 반복을 RepeatOperation을 사용하여 처리하고 있다. 기본 구현체로 RepeatTemplate를 제공한다. 반복을 종료할 것인지 여부를 결정하는 세 가지 항목 RepeatStatus 처리가 끝났는지 판별하기 위한 열거형(Enum) CONTINUALBE : 작업이 남아 있음 FINISHED : 더 이상의 반복 없음 CompletionPolicy RepeatTemplate 의 iterate 메서드 안에서 반복 중단을 결정한다. 실행 횟수 혹은 완료시기, 오류 발생 시 수행할 작업에 대한 반복 여부 결정 정상 종료를 알리는데 사용된다. ExceptionHa..
JobBuilder 의 종류 SimpleJobBuilder SimpleJob( 순차 실행 ) 을 생성한다. FlowJobBuilder FlowJob( flow 특정 및 해당 flow 순서로 실행 ) 을 생성한다. JobBuilder API 인터페이스 예시 public Job job() { return jobBuilderFactory.get("batchJob") .start(Step)// 처음 실행 할 Step 설정 SimpleJobBuilder 생성 .next(Step)// 다음에 실행 할 Step 들을 순차적으로 연결 .incrementer(JobParametersIncrementer)// JobParameters 에서 필요한 값을 증가시켜 다음에 사용될 JobParameters 를 생성 .valida..
1. Job 개념 배치 계층 구조의 최상위 개념, 하나의 작업 자체를 의미 배치 작업을 어떻게 구성하고 실행할 것인지 전체적으로 설명하고 명세해 놓은 클래스 스프링 배치가 기본 구현체를 제공한다. 여러 Step 을 포함하고 있다. 기본 구현체 종류 SimpleJob 순차적으로 Step 을 실행 FlowJob 특정 조건 과 흐름에 따라 Step 을 실행 2. JobInstance 개념 Job 이 실행될 때 생성되는 Job 의 논리적 실행 단위 객체 (각 작업 실행) Job + JobParameter 의 구성을 가지며, 같은 Job 이라도 JobParameter 가 다르면 새로 JobInstance 를 생성 Job(1) 과는 1:M JobParameter 와는 1:1 3. JobParameter 개념 Job..
Spring Batch 란? Spring Batch는 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 리소스 관리와 같이 대용량 레코드 처리에 필수적인 서버이다. 주로 Quartz, Scheduler, Jenkins 등의 스케줄러와 같이 사용하여 특정 시간에 동작 가능한 Job 을 구현한다. 배치 핵심 패턴 Read : DB, 파일, 큐 에서 다량의 데이터 조회 Process : 특정 방법으로 데이터 가공 Write : 데이터를 다시 저장 배치 시나리오 배치 프로세스 주기적 커밋 전략 제공 동시 다발적인 Job(서로 독립적) 의 배치 처리, 대용량 병렬 처리 실패 후 수동 또는 스케줄링에 의한 재시작 의존관계가 있는 step 여러 개를 순차적으로 처리 조건적 Flow 구성을 통한 체계적이고 유연한 배..