Proceso de registro de saltos
Utilice el proceso de skip-record para omitir errores de lectura y grabación de registros en trabajos por lotes de transacción. Especifique políticas de registro de saltos en el xJCL.
Proceso de registro de saltos
Cada secuencia de datos por lotes tiene su propia configuración de política de registro de saltos. Para habilitar el proceso de registro de saltos, especifique un valor distinto de cero para la propiedad de la secuencia de datos por lotes com.ibm.batch.bds.skip.count en el xJCL.
Puede refinar el proceso de registros de omisión utilizando la propiedad com.ibm.batch.bds.skip.include.exception.class. <n> para especificar qué errores de registro omitir y la propiedad com.ibm.batch.bds.skip.exclude.exception.class. <n> para especificar qué errores de registro no omitir. Las dos propiedades se excluyen mutuamente.
La infraestructura por lotes realiza el seguimiento del proceso de registro de saltos en cada paso de la base de datos de estado de trabajo local. Este seguimiento se realiza sólo para las secuencias de datos por lotes de la infraestructura por lotes. Al final del proceso de paso, se graba un mensaje en el registro de trabajo. El mensaje indica el número de registros que se han saltado por secuencia de datos por lotes y el número de registros por segundo por secuencia de datos por lotes. Es posible que el número de registros por segundo no coincida con el número de registros que se la corriente de datos por lotes ha procesado. Si el número real de registros procesados se realizó en menos de un segundo, el valor de los registros por segundo se extrapola a partir del tiempo que se tardó en procesar el número real de registros.
La lista siguiente contiene las propiedades de salto de registro seguidas de una descripción.
- com.ibm.batch.bds.skip.count
Especifica el número de registros que una secuencia de datos por lotes puede omitir debido a un error al leer o grabar un registro. Una vez alcanzado el límite, la secuencia de datos por lotes no omite más errores de lectura o grabación.
Cuando se omite un registro de entrada, la secuencia de datos por lotes cambia al siguiente registro y lo capta. El control no vuelve al llamante hasta que se lee un registro correctamente, se produce un error que no implica omitir registros o se alcanza el límite de omisión.
Cuando se omite un registro de salida, normalmente la secuencia de datos por lotes vuelve al llamante.
Si la secuencia de datos por lotes sufre un error de lectura o grabación una vez alcanzado el límite de omisión, la excepción de lectura o grabación se devuelve al llamante. El registro no se salta.
Si registra un escucha de saltos en la secuencia de datos por lotes, el escucha de saltos recibe el control en cada registrado saltado. Para lecturas saltadas, se invoca el método SkipListener.onSkippedRead(Throwable t). El escucha de saltos recibe el control antes de que se extraiga el registro siguiente. Para las grabaciones omitidas, se invoca el método SkipListener.onSkippedWrite(Object record, Throwable t). El registro omitido se pasa en el primer argumento. El escucha de saltos recibe el control antes de que la secuencia de datos por lotes vuelva al llamante.
El recuento de saltos en ejecución para una secuencia de datos por lotes persiste en todos los puntos de control. Cuando un paso de trabajo se inicia de nuevo, el recuento de saltos se restaura desde el último punto de comprobación confirmado.
El proceso de salto de registro está inhabilitado de forma predeterminada.
Cualquier implementación de la secuencia de datos por lotes que amplía la clase com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataInputStreamRecordMetrics o la clase com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataOutputStreamRecordMetrics hereda automáticamente el soporte de salto de registro. Todas las secuencias de datos por lotes definidas bajo el paquete com.ibm.websphere.batch.devframework.datastreams contienen soporte de salto de registro.
- com.ibm.batch.bds.skip.include.exception.class. <n>
Especifica una lista de excepciones que la secuencia de datos por lotes debe omitir o saltar cuando lee o graba registros. La secuencia de datos por lotes salta sólo las excepciones de la lista.
La variable <n> es un entero. Inicie la variable en 1 y auméntela en uno para cada excepción.
Si no especifica ninguna excepción, el valor predeterminado es que todas las excepciones se incluyan en la lista de errores de lectura/grabación que se deben saltar.
El ejemplo siguiente utiliza la propiedad:
<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>La secuencia de datos por lotes salta los registros de excepciones de entrada/salida y de excepciones de datos erróneos.
- com.ibm.batch.bds.skip.exclude.exception.class.<n>
Especifica una lista de excepciones que no pueden saltarse al leer o grabar registros.
La variable <n> es un entero. Inicie la variable en 1 y auméntela en uno para cada excepción.
Si no especifica ninguna excepción, el valor predeterminado es que ningún registro se excluya de la lista de errores de lectura/grabación que se deben saltar.
El ejemplo siguiente utiliza la propiedad:
<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>La secuencia de datos por lotes no salta registros para excepciones de archivo no encontrado.
Escuchas de saltos
Puede registrar un escucha de saltos en una secuencia de datos por lotes para la escucha de registros saltados. El escucha de saltos recibe el control siempre que se salta un registro.
AbstractBatchDataInputStream _inputBDS =
(AbstractBatchDataInputStream)BatchDataStreamMgr.getBatchDataStream("inputBDS", getJobStepID());
((AbstractBatchDataStreamRecordMetrics)_inputBDS).addSkipListener(new MySkipListener());