Restart예제

개요

Job이 restart 되는 기능을 예제로 제공한다.

설명

설정

Job 설정

Restart 예제의 Job 설정파일인 restartFileSampleJob.xml을 확인한다.

job을 재실행할 수 있는지 여부를 Job 설정시 지정할 수 있다. 디폴트는 true이고 아래와 같이 restartable 설정에 따라 지정할 수 있다.

재실행 가능
	<job id="restartFileSampleJob" xmlns="http://www.springframework.org/schema/batch">
		<step id="restartFileSampleStep1">
			<tasklet>
				<chunk reader="itemReader" processor="itemProcessor" writer="itemWriter"
					commit-interval="5"/>
			</tasklet>
		</step>
	</job>
재실행 불가능
	<job id="restartFileSampleJob" restartable="false" xmlns="http://www.springframework.org/schema/batch">
		<step id="restartFileSampleStep1">
			<tasklet>
				<chunk reader="itemReader" processor="itemProcessor" writer="itemWriter"
					commit-interval="5"/>
			</tasklet>
		</step>
	</job>

JunitTest 구성 및 수행

JunitTest 구성

Restart 예제를 수행하고 배치작업 결과에 대한 검증을 위해 다음과 같이 @Test를 구성하였다.

✔ JunitTest 클래스의 구조는 배치실행환경 예제 Junit Test 설명을 참고한다.
✔ CustomerCreditFlatFileItemWriter 클래스 : 배치수행시 failed를 발생시킨다.
✔ assertEquals(BatchStatus.FAILED, je1.getStatus()); : 배치 첫수행결과가 FAILED 인지 확인한다.
✔ assertEquals(BatchStatus.COMPLETED, je2.getStatus()); : 배치 재수행결과가 COMPLETED 인지 확인한다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/egovframework/batch/simple-job-launcher-context.xml", "/egovframework/batch/jobs/restartFileSampleJob.xml",
		"/egovframework/batch/job-runner-context.xml" })
public class EgovRestartFileSampleFunctionalTests {
 
	//배치작업의 outputResource
	@Autowired
	private Resource outputResource;
 
	//배치작업을  test하기 위한 JobLauncherTestUtils
	@Autowired
	private JobLauncherTestUtils jobLauncherTestUtils;
 
 
	/**
	 * 배치작업 테스트
	 */
	@Test
	public void runTest() throws Exception {
		JobParameters jobParameters = jobLauncherTestUtils.getUniqueJobParameters();
 
		JobExecution je1 = jobLauncherTestUtils.launchJob(jobParameters);
		assertEquals(BatchStatus.FAILED, je1.getStatus());
		AssertFile.assertLineCount(10, outputResource);
 
		JobExecution je2 = jobLauncherTestUtils.launchJob(jobParameters);
		assertEquals(BatchStatus.COMPLETED, je2.getStatus());
		AssertFile.assertLineCount(20, outputResource);
	}
    /**
    *  restart기능 테스트를 위해 작업중간에 failed 발생시키는 writer 클래스
    * @author 배치실행개발팀
    * @since 2012. 06.27
    * @version 1.0
    * @see
     */
	public static class CustomerCreditFlatFileItemWriter extends FlatFileItemWriter<CustomerCredit> {
 
		//failed를 발생시키기 위한 플래그
		private boolean failed = false;
 
 
		/**
		 * write 함
		 */
		@Override
		public void write(List<? extends CustomerCredit> arg0) throws Exception {
			for (CustomerCredit cc : arg0) {
				if (!failed && cc.getName().equals("customer13")) {
					failed = true;
					throw new RuntimeException();
				}
			}
			super.write(arg0);
		}
 
	}
 
}

JunitTest 수행

수행방법은 JunitTest 실행을 참고한다.

결과 확인

JobExecution을 살펴보면, failed된 Job을 restart하여 Complited된 결과를 확인할 수 있다.

참고자료

 
egovframework/rte2/brte/batch_example/restart_mgmt.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki