작성
·
24
0
Q1) JobExecution과 JobExecutionContext는 job이 실행될때마다 생기는게 맞나요?
Q2) 맞다면 강의 예제와 같이 같은 job을 두 번 실행(첫번째 실패, 두번째 성공) 했을때 두번째 JobExecutionContext가 첫번째 JobExeuctionContext에 저장된 내용을 알수있다는게 이해가 되지 않습니다. 하지만 실제로 참고해서 동작하고 있고요. 그렇다면 같은 job이고 같은 jobParameter로 연속해서 실행하면 이전 잡을 복사해서 생성이 되나요? 아니면 다른 방법이 있나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 김석호님! 스프링 배치에서의 JobExecution
과 JobExecutionContext
에 대한 질문을 주셨네요.
Q1) JobExecution
과 JobExecutionContext
는 job이 실행될 때마다 생기는 게 맞나요?
네, 맞습니다. JobExecution
은 특정 JobInstance
의 한 번의 실행을 나타내며, 매번 job이 실행될 때마다 새롭게 생성됩니다. 이와 함께 JobExecutionContext
도 매 실행마다 새로 만들어지며, 해당 실행의 컨텍스트나 상태 정보를 저장하는 데 사용됩니다.
Q2) 동일한 job과 동일한 jobParameter로 연속해서 실행할 경우, 두 번째 JobExecutionContext
가 첫 번째 JobExecutionContext
의 내용을 어떻게 참조할 수 있는가?
Spring Batch에서 동일한 JobInstance
와 JobParameter
로 재실행될 경우, JobExecutionContext
에 저장된 상태와 데이터는 이전 실행으로부터 복구됩니다. 이는 주로 실패한 job의 재시작을 지원하기 위한 것으로, 실패한 지점부터 작업을 다시 시작할 수 있도록 이전 컨텍스트의 데이터를 복원하는 기능을 포함하고 있습니다.
즉, 동일한 JobInstance
가 존재하는 상황에서 job이 실패했다면, 동일한 JobParameter
로 job이 재실행될 때 이전 JobExecutionContext
의 데이터를 활용하여 연속적인 실행을 지원하도록 설계되어 있습니다.
관련된 링크에서 더 자세한 내용을 참고하실 수 있습니다:
- 동일한 JobInstance에 대해서는 JobExecution이 복사가 되나요?
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.