Category: Spring Batch

0

Spring Batch - 18. Job 의 재시작 방지 preventRestart

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 24. FlowJob Post not found: spring/spring-batch/tasklet/spring-batch-23-JobStep Spring Batch - 22. Tasklet 기반 Step Spring Batch - 21. TaskletStep Spring Batch - 20. StepBuilderFactory 와 StepBuilder Spring Batch - 19. JobParameters 증가 JobParametersIncrementer Spring Batch - 18. Job 의 재시작 방지 preventRestart Spring Batch - 17. JobParameters 검증 JobParametersValidator Spring Batch - 16. SimpleJob 와 SimpleJobLauncher Spring Batch - 15. JobBuilderFactory & JobBuilder Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing Job 의 재시작 방지 - preventRestart Job 이 실패하더라도 재시작하지 않도록 설정한다. SimpleJob 에는 Job의 재시작을 관리하는 restartable 은 기본값이 True 로 설정돼 있어 Job 이 실패했을시 재시작 하도록 합니다. preventRestart 메소드는 restartable 를 False 로 변경해 Job 이 실패하더라도 재시작하지 않도록 합니다. preventRestart 메소드는 Job 실행에 대한 JobExecution 객체가 있는지 확인하고 기존 객체가 없을 경우 Job 을 수행합니다. 만일 기존 JobExecution 객체가 있을 경우 Job 을 수행하지 않고 JobRestartException 예외를 발생시킨다.

0

Spring Batch - 17. JobParameters 검증 JobParametersValidator

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 24. FlowJob Post not found: spring/spring-batch/tasklet/spring-batch-23-JobStep Spring Batch - 22. Tasklet 기반 Step Spring Batch - 21. TaskletStep Spring Batch - 20. StepBuilderFactory 와 StepBuilder Spring Batch - 19. JobParameters 증가 JobParametersIncrementer Spring Batch - 18. Job 의 재시작 방지 preventRestart Spring Batch - 17. JobParameters 검증 JobParametersValidator Spring Batch - 16. SimpleJob 와 SimpleJobLauncher Spring Batch - 15. JobBuilderFactory & JobBuilder Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobParameters 검증 - JobParametersValidatorJobParametersValidator 릍 통한 JobParameters 검증은 Job 을 실행하기 전에 SimpleJobLauncher 내부에서 한번 Job 이 실행할때 SimpleJobL 에서 한번 총 두번의 Validation 을 진행한다. public interface JobParametersValidator { void validate(@Nullable JobParameters parameters) throws JobParametersInvalidException;} JobParametersValidator 기본 구현체 - DefaultJobParametersValidator requiredKeys JobParameter 에 필수적으로 포함되어야 할 Key 필수 Key 가 없을 경우 JobParametersInvalidException 예외를 발생시킨다. optionalKeys JobParameter 에 선택적으로 포함되어야 할 Key public DefaultJobParametersValidator(String[] requiredKeys, String[] optionalKeys) { super(); setRequiredKeys(requiredKeys); setOptionalKeys(optionalKeys);}@Overridepublic void validate(@Nullable JobParameters parameters) throws JobParametersInvalidException { if (parameters == null) { throw new JobParametersInvalidException("The JobParameters can not be null"); } Set<String> keys = parameters.getParameters().keySet(); // optionalKeys 가 있을 경우에만 실행 if (!optionalKeys.isEmpty()) { Collection<String> missingKeys = new HashSet<>(); // JobParameters Key 에 대한 검증을 한다. for (String key : keys) { if (!optionalKeys.contains(key) && !requiredKeys.contains(key)) { missingKeys.add(key); } } // JobParameters 로 넘어온 Key 가 requiredKeys 에도 optionalKeys 에도 없으면 JobParametersInvalidException 예외를 발생시킨다. if (!missingKeys.isEmpty()) { throw new JobParametersInvalidException( "The JobParameters contains keys that are not explicitly optional or required: " + missingKeys); } } Collection<String> missingKeys = new HashSet<>(); // requiredKeys 가 JobParameters Key 에 모두 포함이 됐는지 검증한다. for (String key : requiredKeys) { if (!keys.contains(key)) { missingKeys.add(key); } } if (!missingKeys.isEmpty()) { throw new JobParametersInvalidException("The JobParameters do not contain required keys: " + missingKeys); }}

0

Spring Batch - 16. SimpleJob 와 SimpleJobLauncher

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 24. FlowJob Post not found: spring/spring-batch/tasklet/spring-batch-23-JobStep Spring Batch - 22. Tasklet 기반 Step Spring Batch - 21. TaskletStep Spring Batch - 20. StepBuilderFactory 와 StepBuilder Spring Batch - 19. JobParameters 증가 JobParametersIncrementer Spring Batch - 18. Job 의 재시작 방지 preventRestart Spring Batch - 17. JobParameters 검증 JobParametersValidator Spring Batch - 16. SimpleJob 와 SimpleJobLauncher Spring Batch - 15. JobBuilderFactory & JobBuilder Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing SimpleJob Step 을 실행시킬 수 있는 Job 의 구현체로서 SimpleJobBuilder 에 의해 생성된다. 하나 이상의 Step 으로 구성되며 순차적으로 Step 을 실행시킨다. 모든 Step 의 실행이 성공적으로 완료 돼야 Job 이 최종적으로 성공 상태가 된다. SimpleJob 메소드 start 최초로 한번 설정 한 후 SimpleJobBuilder 가 생성되고 반환된다. next 다음 실행할 step 들을 순차적으로 연결하도록 설정 validator Job 실행에 필요한 Parameter 를 검증 DefaultJobParametersValidator 구현체를 지원하며 JobParametersValidator 인터페이스를 직접 구현할 수 있다. preventRestart Job 의 재실행을 방지 하는 설정 incrementer JobParameter 에서 필요한 값을 증가 시켜 다음에 사용할 JobParameter 오브젝트를 리턴 RunIdIncrementer 구현체를 지원하며 JobParametersIncrementer 인터페이스를 직접 구현할 수 있다.

0

Spring Batch - 15. JobBuilderFactory & JobBuilder

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 24. FlowJob Post not found: spring/spring-batch/tasklet/spring-batch-23-JobStep Spring Batch - 22. Tasklet 기반 Step Spring Batch - 21. TaskletStep Spring Batch - 20. StepBuilderFactory 와 StepBuilder Spring Batch - 19. JobParameters 증가 JobParametersIncrementer Spring Batch - 18. Job 의 재시작 방지 preventRestart Spring Batch - 17. JobParameters 검증 JobParametersValidator Spring Batch - 16. SimpleJob 와 SimpleJobLauncher Spring Batch - 15. JobBuilderFactory & JobBuilder Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobBuilderFactory JobBuilder 객체를 생성하는 팩토리 클래스 jobBuilderFactory.get(“jobName”) “jobName” 은 스프링 배치가 Job 을 실행시킬때 참조하는 Job 이름 “jobNaem” 은 DB 에도 저장된다. JobBuilderFactory.java public class JobBuilderFactory { private JobRepository jobRepository; public JobBuilderFactory(JobRepository jobRepository) { this.jobRepository = jobRepository; } public JobBuilder get(String name) { // JobBuilder 클래스가 생성되는 시점에 JobRepository 객체가 전달된다. JobBuilder builder = new JobBuilder(name).repository(jobRepository); return builder; }} JobBuilder

0

Spring Batch - JobRegistry

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 24. FlowJob Post not found: spring/spring-batch/tasklet/spring-batch-23-JobStep Spring Batch - 22. Tasklet 기반 Step Spring Batch - 21. TaskletStep Spring Batch - 20. StepBuilderFactory 와 StepBuilder Spring Batch - 19. JobParameters 증가 JobParametersIncrementer Spring Batch - 18. Job 의 재시작 방지 preventRestart Spring Batch - 17. JobParameters 검증 JobParametersValidator Spring Batch - 16. SimpleJob 와 SimpleJobLauncher Spring Batch - 15. JobBuilderFactory & JobBuilder Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobRegistry JobRegistry 는 JobLauncher가 실행할 수 있는 Job을 등록하고 관리하는 인터페이스, JobRegistry는 일반적으로 JobLauncher를 생성하는 데 사용됩니다. JobRegistry를 사용하면 JobLauncher가 실행할 수 있는 Job을 등록하고, 실행 시간에 등록된 Job을 선택할 수 있습니다. JobRegistry는 다양한 방법으로 구현될 수 있으며, XML 파일, 데이터베이스, 자바 구성 등에서 Job을 등록할 수 있습니다. JobRegistry는 Spring Batch에서 Job을 실행하는 방법 중 하나입니다. 다른 방법으로는 JobRepository를 사용하여 Job을 저장하고, JobOperator를 사용하여 Job을 실행하는 방법이 있습니다. JobRegistry는 JobLauncher를 생성하는 데 사용되며, JobLauncher는 Job을 실행합니다. JobRegistry는 Spring Batch에서 Job의 관리 및 실행을 간편하게 할 수 있는 기능을 제공합니다. JobRegistry를 사용하면 Job을 등록하여 여러 Job을 실행할 수 있고, Job을 실행할 때마다 새로운 Job을 만들 필요가 없습니다. 또한 JobRegistry를 사용하면 JobLauncher를 생성하는 과정을 단순화할 수 있습니다.

0

Spring Batch - 14. 배치 초기화 설정 (application.properties)

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing BatchAutoConfiguration BatchAutoConfiguration 에서는 ApplicationRunner 의 일종인 JobLauncherApplicationRunner 를 생성한다. BatchAutoConfiguration은 @EnableBatchProcessing 어노테이션을 사용하여 활성화됩니다. BatchAutoConfiguration.java public class BatchAutoConfiguration { @Bean @ConditionalOnMissingBean @ConditionalOnProperty(prefix = "spring.batch.job", name = "enabled", havingValue = "true", matchIfMissing = true) public JobLauncherApplicationRunner jobLauncherApplicationRunner(JobLauncher jobLauncher, JobExplorer jobExplorer, JobRepository jobRepository, BatchProperties properties) { // JobLauncher 객체와 JobExplorer 객체와 JobRepository 객체를 이용해 JobLauncherApplicationRunner 객체를 생성한다. JobLauncherApplicationRunner runner = new JobLauncherApplicationRunner(jobLauncher, jobExplorer, jobRepository); // Application Properties 에 등록된 Job 이름들을 가져온다. String jobNames = properties.getJob().getNames(); if (StringUtils.hasText(jobNames)) { runner.setJobNames(jobNames); } return runner; } ... 이하 생략 ...} JobLauncherApplicationRunner

0

Spring Batch

Real Time 작업 - 실시간 작업바로 응답을 받아서 보는 것을 실시간 작업이라 한다. 배치 작업은작업들을 한번에 모아서 처리하는 작업 배송이나 정산은 모아서 특정 주기마다 처리하는 작업고객눈에는 보이지 않지만 서비스 뒷펀에서 대량의 작업을 처리한다.

0

Spring Batch - 배치 초기화 설정

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobLauncherApplicationRunner Spring Batch 작업을 시작하는 ApplicationRunner 로서 BatchAutoConfiguration 에서 생성된다. Spring boot 에서 제공하는 ApplicationRunner 의 구현체로 어플리케이션이 정상적으로 구동되자 마자 실행된다. Bean 으로 등록된 모든 Job 을 실행시킨다. BatchProperties Spring Batch 의 환경 설정 클래스 Job 이름, 스키마 초기화 설정, 테이블 Prefix 등의 값을 설정할 수 있다. application.properties or application.yml 파일에 설정한다.

0

Spring Batch - 13. JobLauncher

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobLauncher Batch Job 을 실행시키는 역할 Job 과 JobParameters 를 인자로 받으며 요청된 Batch 작업을 수행한 후 최종 Client 에게 JobExecution 을 반환한다. Spring Batch 가 구동 되면 JobLauncher Bean 이 자동 생성된다. JobLauncher 를 이용한 Job 실행 Spring boot Batch 에서는 JobLauncherApplicationRunner 가 자동적으로 JobLauncher 를 실행시킨다. 동기적 실행 taskExecutor 를 SyncTaskExecutor 로 설정할 경우 JobExecution 을 획득하고 배치 처리를 최종 완료한 후 Client 에게 JobExecution 을 반환한다. 스케줄러 에 의한 배치처리에 적합하다. 비 동기적 실행 taksExecutor 가 SimpleAsyncTaskExecutor 로 설정할 경우 JobExecution 을 획득한 후 Client 에게 바로 JobExecution 을 반환하고 배치처리를 완료한다. HTTP 요청 에 의한 배치처리에 적합하다. 배치 처리 시간이 길어질 경우 응답이 늦어지지 않도록 한다.

0

Spring Batch - 12. JobRepository

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobRepository Batch 작업 중에 생성되거나 변경되는 메타데이터들을 저장하는 저장소 역할 JobRepository는 스프링 배치의 핵심 컴포넌트 중 하나로, Job을 실행하거나 재시작할 때 사용되는 메타데이터를 관리합니다. 이 메타데이터에는 Job의 실행 상태, Job의 실행에 필요한 파라미터, 실행 시간 등의 정보가 포함됩니다. JobRepository는 Job의 실행 상태를 추적하고, Job이 실행되는 동안 발생하는 예외를 처리하고, 재시작을 위해 이전 실행 정보를 보관합니다. Job 이 언제 수행됐고, 언제 끝났으며, 몇 번 실행됐고 실행에 대한 결과 등의 배치 작업 실행과 관련된 모든 Meta Data 를 저장한다. JobLauncher, Job, Step 구현체 내부에서 CRUD 기능을 처리한다.

0

Spring Batch - 11. ExecutionContext

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing ExecutionContext 프레잌워크에서 유지 및 관리하는 Key/Value 컬렉션으로 JobExecution, StepExecution 객체의 상태를 저장하는 공유 객체 DB 에 직렬화 한 값으로 저장된다. Job 재 시작시 이미 처리한 Row 데이터는 건너뛰고 이후로 수행하도록 할 때 상태 정보를 활용한다. ExecutionContext 는 Job 또는 Step 의 실행 중에 데이터를 공유하거나 저장하기 위한 메커니즘으로 JobExecution, StepExecution 및 JobParameter 와 함께 사용됩니다. ExecutionContext 는 JobExecutionContext 와 StepExecutionContext 로 구분됩니다. JobExecutionContext 는 Job 의 실행 컨텍스트를 나타내며, StepExecutionContext 는 Step 의 실행 컨텍스트를 나타냅니다. JobExecutionContext 는 모든 Step에서 공유됩니다. 그러나 StepExecutionContext 는 Step 간에 공유되지 않으며, 각 Step 에서 고유한 ExecutionContext 를 유지합니다. ExecutionContext 는 기본적으로 Map<String, Object> 타입으로 사용자가 직접 데이터를 추가, 수정, 삭제할 수 있습니다. 예를 들어, Job 또는 Step 실행 중에 사용자 데이터를 저장하고 싶은 경우, ExecutionContext 를 사용하여 저장할 수 있습니다.

0

Spring Batch - 10. StepContribution

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing StepContribution Chunk 프로세스의 변경 사항을 버퍼링 한 후 StepExecution 상태를 업데이트 하는 객체 Chunk Commit 직전에 StepExecution 의 apply 메서드를 호출해 상태르르 업데이트 한다. ExitStatus 의 기본 종료 코드 외 사용자 정의 종료 코드를 생성해서 적용할 수 있다. TaskletStep 클래스내 doInTransaction 메서드에서 StepExecution 객체를 이용해 StepContribution 객체를 생성한다. Tasklet 을 실행시킨다. TaskletStep.java

0

Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing StepExecution Step 에 대한 한번의 시도를 의미하는 객체로서 Step 실행 중에 발생한 정보들을 저장하고 있는 객체BATCH_STEP_EXECUTION 테이블과 매핑된다. StepExecution 객체는 Step 이 매번 시도될 때마다 각 Step 별로 생성되며 JobRepository 를 통해 저장됩니다. 이를 통해 실행 중인 Step의 정보를 추적하고, 필요한 경우 실행을 재개하거나 롤백할 수 있습니다. Job 이 재시작 하더라도 이미 성공적으로 완료된 Step 은 재 실행되지 않고 실패한 Step 만 실행됩니다. 이전 단계 Step 이 실패해서 현재 Step 을 실행하지 않는다면 StepExecetoin 객체를 생성하지 않는다. StepExecution 인터페이스public interface StepExecution { public long getStepExecutionId(); public String getStepName(); public BatchStatus getBatchStatus(); public Date getStartTime(); public Date getEndTime(); public String getExitStatus(); public Serializable getPersistentUserData(); public Metric[] getMetrics();}

0

Spring Batch - 08. Step

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing Step Batch Job 을 구성하는 독립적인 하나의 단계로서 실제 배치 처리를 정의하고 컨트롤하는 데 필요한 모든 정보를 가지고 있는 도메인 객체 단순한 단일 테스크 뿐 아리나 입력, 처리 그리고 출력과 관련된 복잡한 비즈니스 로직을 포함하는 모든 설정들을 담고 있다. 배치 작업을 어떻게 구성하고 실행할 것인지 Job 의 세부 작업을 Task 기반으로 설정하고 명세해 놓은 객체 모든 Job 은 하나 이상의 step 으로 구성된다. Step은 하나 이상의 Batch 작업을 수행하는 논리적인 단위입니다. 각 Step은 하나의 Tasklet 또는 하나 이상의 Reader, Processor 및 Writer 구성 요소를 포함할 수 있습니다. Reader는 데이터 소스에서 데이터를 읽고 Processor는 읽어온 데이터를 가공하고 Writer는 가공된 데이터를 결과 저장소에 씁니다. 이러한 구성 요소는 일련의 스텝으로 연결되어 Batch 작업의 흐름을 제어합니다. Step은 각 스텝의 실행 전/후에 수행해야 할 작업을 처리하기 위한 Tasklet도 지원합니다. 예를 들어, 스텝이 실행되기 전에 데이터베이스 테이블을 비워야 하는 경우, 이러한 작업을 Tasklet에 포함시킬 수 있습니다. Spring Batch는 스텝 간에 데이터를 공유하는 방법도 제공합니다. 이를 통해 하나의 스텝이 처리한 결과를 다음 스텝에서 사용할 수 있습니다.

0

Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블

출처 해당 포스트는 정수원 강사님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 바탕으로 작성 됐습니다. 목차 Spring Batch - 14. 배치 초기화 설정 (application.properties) Spring Batch - 13. JobLauncher Spring Batch - 12. JobRepository Spring Batch - 11. ExecutionContext Spring Batch - 10. StepContribution Spring Batch - 09. StepExecution 와 STEP_EXECUTION 테이블 Spring Batch - 08. Step Spring Batch - 07. JobExecution 와 JOB_EXECUTION 테이블 Spring Batch - 06. JobParameter 와 JOB_EXECUTION_PARAM 테이블 Spring Batch - 05. JobInstance 와 JOB_INSTANCE 테이블 Spring Batch - 04. JobLauncher Spring Batch - 03. Job Spring Batch - 02. Batch 에서 사용하는 Table Spring Batch - 01. @EnableBatchProcessing JobExecution Job 실행 중에 발생한 정보들을 저장하고 있는 객체, JobInstance 에 대한 시도를 의미하는 객체로서 1:N 의 관계를 갖는다.BATCH_JOB_EXECUTION 테이블과 매핑되고 로서 JobInstance 에 대한 성공 / 실패 내역을 관리한다. JobExecution 객체는 JobInstance 가 실행될 때 마다 생성됩니다. JobExecution 객체는 Job 의 실행 결과 FAILED 또는 COMPLETED 등의 값을 관리합니다. JobExecution 의 실행 결과가 COMPLETED 면 JobInstance 실행이 완료된 것으로 간주해 동일한 JobParameter 를 이용한 재실행이 불가능합니다. JobExecution 의 실행 결과가 FAILED 면 JobInstance 실행이 완료되지 않은 것으로 간주해 동일한 JobParameter 를 이용한 재실행이 가능합니다. 또한, JobExecution 의 실행 결과가 COMPLETED 될 때까지 하나의 JobInstance 내에서 여러 번의 시도가 생길 수 있다.