inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

배치 작업 도중 실패할때

607

작성자 없음

작성한 질문수 0

0

안녕하세요 강의 잘 보고있습니다.

 

데이터가 100개 있고, 청크 사이즈가 10이라고 할 때

 

0~9, 10 ~ 19 까지 성공하고 애플리케이션 문제 등으로 프로그램이 종료  혹은 실패가 되었을 때,

다시 0번부터 실행 안 하고, 20번 부터 실행을 하려면 어떻게 해야될까요? 몇번부터 몇번까지 실행했는지 기록하는 메타데이터용 테이블을 만들어서 기록해야되는 거 말고는 없나요??

(예를 들어 실패했을때 다시 실행하면, 실패한 곳부터 알아서 스프링 배치가 실행해주는..)

spring-boot spring-batch

답변 2

1

정수원

스프링 배치에서 ExecutionContext 객체를 통해서 데이터를 읽을 때 기본적으로 readcount 를 기록해 줍니다.

즉 청크 단위로 데이터를 읽어서 커밋이 성공한 것 까지의 개수를 인서트 해 주고 있는데 이 정보를 활용해서 여러가지 기능을 활용하는 것은 개발자의 몫입니다.

일단 최종적으로 커밋한 것 까지의 개수가 참조 가능하기 때문에 다시 배치를 재실행 했을 때 이미 성공한 지점은 건너뛰고 실패한 지점부터 다시 커밋이 가능하도록 구현할 수 있습니다.

근데 실패한 곳부터  스프링 배치가 알아서 스스로 실행해 주는 역할의 범위와 실패의 위치를 명확하게 정할 수 있는지는 의문입니다.

스프링 배치는 청크 단위로 데이터를 읽어서 청크 단위로 커밋을 해 주고 실패했을 경우 청크 단위로 롤백처리는 해줍니다.

거기에다 실패한 지점까지의 데이터 위치를 기록해 주고 이를 활용할 수 있는 InputStream 과 ExecutionContext 를 제공해 줍니다.

이 정도까지 기본 구현이 되어 있는 것도 대단한 지원이라고 개인적으로 생각합니다.

실제로 배치 프로그램을 만든다면 위의 사항을 구현하기도 그리 녹록치 않기 때문입니다.

0

단무지

감사합니다. 즉 데이터 청크단위로 데이터 롤백이 발생하기 때문에 청크 사이즈가 100인데, 50번째 데이터에서 롤백이 발생하면 readcount는 0이되니까 실질적으로 기록하기 힘들다는 뜻으로 해석하면 될까요?

스프링 배치 버전 질문

0

122

1

소스코드가 어디에 있나요?

0

96

2

트랜잭션 예외

0

92

1

질문이 있습니다.

0

130

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

125

2

여러 JOB 설정하는법

0

150

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

186

2

특정 job만 실행

1

252

1

Batch 성능 질문

0

153

1

ItemReaderAdapter 종료

0

80

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

179

2

Spring Batch 배포 질문

0

246

2

spring batch 버전

0

236

2

retry count 관련 질문

0

172

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

330

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

235

2

Multithread step과 AsyncItemProcessor

0

203

2

job 재실행

0

251

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

183

1

Multi-threaded-step과 Partitioning 차이 확인

0

175

2

jdbcCursorReader, jdbcPagingReader 질문

0

146

1

step muti-thread 질문

0

111

1

itemSteam open update close 질문

0

112

1