[스프링 배치] 배치 잡의 세션 ExecutionContext

반응형
728x90
반응형

상황

스프링 배치가 진행중이다. 진행 도중에 오류가 발생했고, 실패한 시점부터 처리를 다시 시작해야한다. 이 경우에 스프링 배치는 실패한 시점을 어떻게 알아낼 수 있을까? 실패시마다, 사용자가 실행 상태를 재설정하는 일은 매우 번거롭고 어렵다. 스프링 배치가 이를 대신해준다.

 

 

 

JobExecution

우리는 이미 JobExecution 에 대해 배웠다.

https://devfunny.tistory.com/476?category=820618 

 

[스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters)

잡의 실행 잡의 실행은 잡 러너 (Job Runner) 에서 시작된다. 잡 러너는 잡 이름과 여러 파라미터를 받아, 잡을 실행시킨다. 스프링 배치는 2가지 잡 러너를 제공한다. 1) CommandLineJobRunner 스크립트를

devfunny.tistory.com

 

JobExecution 은 잡, 스텝이 진행될때 변경되고 잡 상태는 JobExecution 의 ExecutionContext 에 저장된다. 여기서 StepExecution 도 동일하게 Execution을 가진다.

 

 

 

ExecutionContext

ExecutionContext 는 기본적으로 배치 잡의 세션이다. 스프링 배치에서는 잡을 다루는 과정에서 실제로 여러개의 ExecutionContext가 존재할 수 있다. 스프링 배치는 잡이 처리되는 동안 각 청크를 커밋하면서 잡 또는 스텝의 상태를 저장한다. 구체적으로는 잡과 스텝의 현재 ExecutionContext 를 데이터베이스에 저장한다.

 

/** 잡의 Execution Context 가져오기 */
ExecutionContext jobContext = chunkContext.getStepContext() /* 스텝 */
                                    .getStepExecution()
                                    .getJobExecution() /* 잡 */
                                    .getExecutionContext();

/** 스텝의 Execution Context 가져오기 */
ExecutionContext jobContext = chunkContext.getStepContext() /* 스텝 */
                                    .getStepExecution()
                                    .getExecutionContext();

 

반응형

Designed by JB FACTORY