Retry-step 처리

processJobStep 메소드가 트랜잭션 일괄처리 작업에서 오류를 만나면 retry-step 처리를 사용하여 작업 단계를 다시 시도합니다. xJCL에서 retry-step 정책을 지정합니다.

각 작업 단계에는 자체 retry-step 정책 구성이 있습니다. xJCL에서 com.ibm.batch.step.retry.count 작업 단계 특성에 대해 0(영)이 아닌 값을 지정하여 retry-step 처리를 사용합니다.

단계 실패 시 다시 시도될 수 있는 예외를 지정하도록 com.ibm.batch.step.retry.include.exception.class.<n> 특성을 사용하고 단계 실패 시 다시 시도될 수 없는 예외를 지정하도록 com.ibm.batch.step.retry.exclude.exception.class.<n> 특성을 사용하여 retry-step 처리를 개선할 수 있습니다. 두 특성은 상호 배타적입니다.

일괄처리 프레임워크는 로컬 작업 상태 데이터베이스에서 각 단계 기반으로 retry-step 처리를 추적합니다. 단계 처리 끝에서 메시지는 작업 로그에 기록됩니다. 메시지는 단계를 다시 시도하는 횟수 및 단계가 사용하는 전체 클럭 시간을 표시합니다. 클럭 시간의 포맷은 HH:MM:SS:MMM이며, 여기서 HH는 시간이고, MM은 분이며, SS는 초이고 MMM은 밀리초입니다.

다음 목록은 설명이 이어지는 retry-step 특성을 포함합니다.

com.ibm.batch.step.retry.count

processJobStep 메소드를 처리하는 단계에서의 오류 때문에 단계를 다시 시도할 수 있는 횟수를 지정합니다. 한계에 도달하면 추가 단계 오류는 다시 시도되지 않습니다.

BatchJobStepInterface.processJobStep 메소드는 throws java.lang.Exception 절을 지원합니다. processJobStep 메소드의 예외는 retry-step 처리에 적합합니다.

단계를 다시 시도하는 것은 다시 시작하는 것과 동등합니다. BatchJobStepInterface.destroyJobStep 메소드는 단계 오류 후 호출됩니다. 체크포인트 트랜잭션은 단계 다시 시작 전에 롤백됩니다. 단계가 다시 시도되면 BatchJobStepInterface.createJobStep 메소드가 호출됩니다. 단계와 연관된 모든 일괄처리 데이터 스트림이 처리완료되고 재시도 시 다시 열립니다.

단계 재시도를 위한 한계에 도달한 후 단계에 대해 오류가 발생하면, 단계가 실패하고 다시 시작 가능한 상태로 작업이 완료됩니다.

작업 단계 컨텍스트로 재시도 리스너를 등록하는 경우, 재시도 리스너는 다시 시도될 수 있는 모든 예외에 대한 제어를 수신합니다. 실패된 단계가 destroyJobStep 메소드를 입력하기 전 및 체크포인트 트랜잭션이 롤백되기 전에 RetryListener.onError(Throwable t) 메소드가 호출됩니다. 단계가 재시도되면 RetryListener.onRetry(Throwable t) 메소드는 제어를 수신하지만, BatchJobStepInterface.createJobStep 메소드가 호출됩니다.

재시도 리스너는 RetryListener.onRetry 메소드가 호출된 후 즉시 등록 해제됩니다. 일괄처리 애플리케이션이 추가 시도를 인식하여 다시 단계를 시도하려는 경우, 재시도 리스너를 다시 등록합니다.

단계가 다시 시도될 수 있는 횟수의 실행 개수는 모든 체크포인트에서 0(영)으로 재설정됩니다. 이는 재시도 한계가 사실상 체크포인트당 한계임을 의미합니다.

Retry-step 처리는 기본적으로 사용 불가능합니다.

com.ibm.batch.step.retry.delay.time

단계를 다시 시도하기 전에 대기할 시간(밀리초)을 지정합니다. 실패한 단계가 destroyJobStep 메소드를 통해 이동한 후 및 체크포인트 트랜잭션이 롤백된 후 지연이 발생합니다. 그러나 RetryListener.onRetry 메소드 호출 전에 지연이 발생합니다.

com.ibm.batch.step.retry.include.exception.class.<n>

단계 실패 시 다시 시도될 수 있는 예외 목록을 지정합니다.

<n>은 정수입니다. 1에서 변수를 시작하고 예외마다 하나씩 증가시킵니다.

예외를 지정하지 않으면 기본값은 모든 예외가 목록에 포함됩니다.

다음 예는 특성을 사용합니다.

<job-step name="WCGStep1">
    <classname>com.ibm.ws.batch.sample.WCGSampleBDSBatchStep</classname>
    <checkpoint-algorithm-ref name="chkpt"/>
    <results-ref name="jobsum"/>
    <props>
      <prop name="com.ibm.batch.step.retry.count" value="1" />
      <prop name="com.ibm.batch.step.retry.delay.time" value="3000" />
      <prop name="com.ibm.batch.step.retry.include.exception.class.1" value="java.sql.SQLException" />
    </props>

    ...
  </job-step>

WCGStep1 작업 단계는 SQL(Structured Query Language) 예외에 대한 작업 단계를 다시 시도합니다.

com.ibm.batch.step.retry.exclude.exception.class.<n>

단계 실패 시 다시 시도될 수 없는 예외 목록을 지정합니다.

<n> 변수는 정수입니다. 1에서 변수를 시작하고 예외마다 하나씩 증가시킵니다.

예외를 지정하지 않으면 기본값은 예외가 목록에서 제외되지 않는 것입니다.

다음 예는 특성을 사용합니다.

<job-step name="WCGStep1">
    <classname>com.ibm.ws.batch.sample.WCGSampleBDSBatchStep</classname>
    <checkpoint-algorithm-ref name="chkpt"/>
    <results-ref name="jobsum"/>
    <props>
      <prop name="com.ibm.batch.step.retry.count" value="1" />
      <prop name="com.ibm.batch.step.retry.delay.time" value="3000" />
      <prop name="com.ibm.batch.step.retry.exclude.exception.class.1" value="java.sql.SQLException" />
    </props>

    ...
  </job-step>

WCGStep1 작업 단계는 SQL(Structured Query Language) 예외에 대한 작업 단계를 다시 시도하지 않습니다.

재시도 리스너

JobStepContext 메소드로 재시도 리스너를 등록하여 다시 시도할 예외를 인식할 수 있습니다. 다시 시도될 수 있는 예외가 발생하고 단계가 다시 시도될 때마다 재시도 리스너는 제어를 수신합니다.

재시도 리스너는 JobStepContext 메소드에서 addRetryListener 메소드로 등록될 수 있습니다.
 JobStepContextMgr.getContext().addRetryListener(new MyRetryListener());

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rgrid_xdbatchretrysp
파일 이름:rgrid_xdbatchretrysp.html