Skip-record 처리

skip-record 처리를 사용하여 트랜잭션 일괄처리 작업에서 읽기 및 쓰기 레코드 오류를 건너뛰십시오. xJCL에서 skip-record 정책을 지정합니다.

Skip-record 처리

각 일괄처리 데이터 스트림에는 자체 skip-record 정책 구성이 있습니다. xJCL에서 com.ibm.batch.bds.skip.count 일괄처리 데이터 스트림 특성에 대한 영(0)이 아닌 값을 지정하여 skip-record 처리를 사용합니다.

com.ibm.batch.bds.skip.include.exception.class.<n> 특성을 사용하여 건너뛰기 레코드 처리를 세분화하여 건너뛸 레코드 오류를 지정하고 com.ibm.batch.bds.skip.exclude.exception.class.<n> 특성을 사용하여 건너뛰지 않을 레코드 오류를 지정할 수 있습니다. 두 특성은 상호 배타적입니다.

일괄처리 프레임워크는 로컬 작업 상태 데이터베이스에서 각 단계 기반으로 건너뛰기 레코드 처리를 추적합니다. 이 추적은 일괄처리 프레임워크에서 일괄처리 데이터 스트림에 대해서만 수행됩니다. 단계 처리 끝에서 메시지는 작업 로그에 기록됩니다. 메시지는 일괄처리 데이터 스트림마다 건너뛰었던 레코드의 수 및 일괄처리 데이터 스트림마다 초당 레코드의 수를 표시합니다. 초당 레코드의 수는 일괄처리 데이터 스트림에서 처리되었던 레코드의 수와 일치하지 않을 수 있습니다. 처리된 실제 레코드의 수가 1초 미만이 소요된 경우, 초당 레코드의 값은 실제 레코드의 수를 처리하는 데 소요된 시간에서 추론됩니다.

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

com.ibm.batch.bds.skip.count

레코드 읽기 또는 쓰기에서의 오류 때문에 일괄처리 데이터 스트림이 건너뛸 수 있는 레코드의 수를 지정합니다. 한계에 도달된 후, 일괄처리 데이터 스트림은 추가 읽기 또는 쓰기 오류를 건너뛰지 않습니다.

입력 레코드가 건너뛰면 일괄처리 데이터 스트림은 다음 레코드로 이동하고 페치됩니다. 성공적으로 레코드를 읽고, 레코드 건너뛰기와 관련되지 않은 오류가 발생하거나 건너뛰기 한계에 도달할 때까지 제어는 호출자에 대해 리턴되지 않습니다.

출력 레코드가 건너뛰면 보통 일괄처리 데이터 스트림은 호출자로 리턴됩니다.

건너뛰기 한계에 도달한 후 일괄처리 데이터 스트림에 읽기나 쓰기 오류가 발생하면, 읽기 또는 쓰기 예외가 호출자로 리턴됩니다. 레코드는 건너뛰지 않습니다.

일괄처리 데이터 스트림으로 건너뛰기 리스너를 등록하면 건너뛰기 리스너는 건너뛴 모든 레코드에 대한 제어를 수신합니다. 건너뛴 읽기의 경우, SkipListener.onSkippedRead(Throwable t) 메소드가 호출됩니다. 건너뛰기 리스너는 다음 레코드를 페치하기 전에 제어를 수신합니다. 건너뛴 쓰기의 경우, SkipListener.onSkippedWrite(Object record, Throwable t) 메소드가 호출됩니다. 건너뛴 레코드는 첫 번째 인수에 전달됩니다. 건너뛰기 리스너는 일괄처리 데이터 스트림이 호출자에게 리턴되기 전에 제어를 수신합니다.

일괄처리 데이터 스트림에 대해 실행 중인 건너뛰기 개수는 모든 체크포인트에서 유지됩니다. 작업 단계가 다시 시작되면 건너뛰기 개수는 마지막 커미트된 체크포인트에서 복원됩니다.

기본적으로 건너뛰기 레코드 처리가 사용 안함으로 설정됩니다.

com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataInputStreamRecordMetrics 클래스 또는 com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataOutputStreamRecordMetrics 클래스를 확장하는 일괄처리 데이터 스트림 구현은 자동으로 건너뛰기 레코드 지원을 상속합니다. com.ibm.websphere.batch.devframework.datastreams 패키지 아래 정의된 모든 일괄처리 데이터 스트림은 건너뛰기 레코드 지원을 포함합니다.

com.ibm.batch.bds.skip.include.exception.class.<n>

레코드를 읽거나 쓸 때 건너 뛸 일괄처리 데이터 스트림에 대한 예외 목록을 지정합니다. 일괄처리 데이터 스트림은 목록에서 예외만 건너뜁니다.

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

예외를 지정하지 않으면 기본값은 모든 예외가 건너뛸 읽기/쓰기 오류의 목록에 포함됩니다.

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

<batch-data-streams>
   <bds>
     <logical-name>inputBDS</logical-name>
     <props>
       <prop name="PATTERN_IMPL_CLASS" value="com.ibm.ws.batch.sample.bds.WCGSampleBDS"/>
       <prop name="file.encoding" value="8859_1"/>
       <prop name="FILENAME" value="/tmp/input.txt" />
       <prop name="com.ibm.batch.bds.skip.count" value="5" />
       <prop name="com.ibm.batch.bds.skip.include.exception.class.1"
             value="java.io.IOException" />
       <prop name="com.ibm.batch.bds.skip.include.exception.class.2"
             value="com.xyz.bds.error.BadDataException" />
     </props>
     <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileReader</impl-class>
   </bds>
</batch-data-streams>

일괄처리 데이터 스트림은 입출력 예외 및 잘못된 데이터 예외에 대한 레코드를 건너뜁니다.

com.ibm.batch.bds.skip.exclude.exception.class.<n>

레코드를 읽거나 쓸 때 건너뛸 수 없는 예외 목록을 지정합니다.

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

예외를 지정하지 않으면 기본값은 레코드가 건너뛸 읽기/쓰기 레코드 오류의 목록에서 제외되지 않는 것입니다.

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

<batch-data-streams>
   <bds>
     <logical-name>inputBDS</logical-name>
     <props>
       <prop name="PATTERN_IMPL_CLASS" value="com.ibm.ws.batch.sample.bds.WCGSampleBDS"/>
       <prop name="file.encoding" value="8859_1"/>
       <prop name="FILENAME" value="/tmp/input.txt" />
       <prop name="com.ibm.batch.bds.skip.count" value="3" />
       <prop name="com.ibm.batch.bds.skip.exclude.exception.class.1"
             value="java.io.FileNotFoundException" />
     </props>
     <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.TextFileReader</impl-class>
   </bds>
</batch-data-streams>

일괄처리 데이터 스트림은 예외가 없는 파일의 레코드를 건너뛰지 않습니다.

건너뛰기 리스너

일괄처리 데이터 스트림으로 건너뛰기 리스너를 등록하여 건너뛴 레코드를 청취할 수 있습니다. 레코드가 건너뛸 때마다 건너뛰기 리스너는 제어를 수신합니다.

다음 예 코드는 건너뛰기 리스너를 등록합니다.
AbstractBatchDataInputStream _inputBDS =
   (AbstractBatchDataInputStream)BatchDataStreamMgr.getBatchDataStream("inputBDS", getJobStepID());
((AbstractBatchDataStreamRecordMetrics)_inputBDS).addSkipListener(new MySkipListener());

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



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