[스프링 배치] 배치 잡의 세션 ExecutionContext
- Coding/Spring Batch
- 2021. 9. 20.
반응형
728x90
반응형
상황
스프링 배치가 진행중이다. 진행 도중에 오류가 발생했고, 실패한 시점부터 처리를 다시 시작해야한다. 이 경우에 스프링 배치는 실패한 시점을 어떻게 알아낼 수 있을까? 실패시마다, 사용자가 실행 상태를 재설정하는 일은 매우 번거롭고 어렵다. 스프링 배치가 이를 대신해준다.
JobExecution
우리는 이미 JobExecution 에 대해 배웠다.
https://devfunny.tistory.com/476?category=820618
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();
반응형
'Coding > Spring Batch' 카테고리의 다른 글
[스프링 배치] JobLauncherCommandLineRunner 모든 잡 실행 설정 제거 (0) | 2021.09.20 |
---|---|
[스프링 배치] 잡의 종료 상태 설정 방법 (0) | 2021.09.20 |
[스프링 배치] 잡 리스너의 적용 (0) | 2021.09.20 |
[스프링 배치] 잡 파라미터 접근 ChunkContext (0) | 2021.09.20 |
스프링배치가 제공하는 배치 메타데이터 저장 테이블 (BATCH_JOB_INSTANCE, BATCH_JOB_EXECUTION, BATCH_JOB_EXECUTION_CONTEXT, BATCH_JOB_EXECUTION_PARAMS, BATCH_STEP_EXECUTION, BATCH_STEP_EXECUTION_CONTEXT) (1) | 2021.09.09 |