Overview
En esta guía, aprenderá a gestionar errores en su conector de receptor de MongoDB Kafka. La siguiente lista muestra algunos escenarios comunes que provocan errores en su conector de receptor:
Escribe en un tema utilizando la serialización Avro e intentas decodificar tus mensajes de ese tema utilizando la deserialización Protobuf
Utiliza un controlador de captura de datos de cambios en un mensaje que no contiene documentos de eventos de cambio
Aplica una transformación de mensaje único no válida a los documentos entrantes
Cuando el conector del fregadero detecta un error, realiza dos acciones:
Manejar errores
Cuando el conector encuentra un error, debe gestionarlo de alguna manera. Su conector de sink puede hacer lo siguiente en respuesta a un error:
Detener ante cualquier error predeterminado
Detener ante cualquier error
Por defecto, tu conector de destino termina y deja de procesar mensajes cuando encuentra un error. Esta es una buena opción si cualquier error en el conector de destino indica un problema grave.
Cuando tu conector de destino se bloquea, debes realizar una de las siguientes acciones y luego reiniciar el conector para reanudar el procesamiento de mensajes:
Permita que el conector del fregadero tolere errores temporalmente
Actualiza la configuración del conector de sumidero para que pueda procesar el mensaje
Remueve el mensaje erróneo de tu tema
Puede hacer que su conector de salida se detenga cuando encuentre un error al no especificar ningún valor para el errors.tolerance opción, o agregando lo siguiente a la configuración de su conector:
errors.tolerance=none
Tolerar todos los errores
Puede configurar su conector de sumidero para que tolere todos los errores y nunca deje de procesar mensajes. Esta es una buena opción para que su conector de sumidero esté listo y funcionando rápidamente, pero corre el riesgo de pasar por alto problemas en su conector, ya que no recibe ninguna respuesta si algo falla.
Puedes permitir que tu conector de salida tolere todos los errores especificando la siguiente opción:
errors.tolerance=all
Advertencia
Las escrituras masivas ordenadas pueden provocar la omisión de mensajes
Si configura su conector para tolerar errores y utiliza escrituras masivas ordenadas, podría perder datos. Si configura su conector para tolerar errores y utiliza escrituras masivas desordenadas, perderá menos datos. Para obtener más información sobre las operaciones de escritura masiva, consulte Página de Estrategias de Modelo de Escritura.
Tolerar errores en los datos
Puede configurar su conector de sumidero para tolerar solo errores de datos y detener el procesamiento para todos los demás. Con este ajuste, el conector envía errores de datos a la fila de letra muerta, si se ha configurado una.
Configura tu conector de destino para tolerar únicamente errores de datos, especificando la siguiente opción:
errors.tolerance=data
Escribir errores y mensajes erróneos en un tema
Puedes configurar tu conector sumidero para que escriba errores y mensajes erróneos en un tema, llamado fila de letra muerta, para que los inspecciones o proceses más a fondo. Una fila de letra muerta es una ubicación en sistemas de encolamiento de mensajes como Apache Kafka, donde el sistema redirige los mensajes erróneos en lugar de bloquearse o ignorar el error. Las filas de letra muerta combinan la retroalimentación de detener el programa con la durabilidad de tolerar todos los errores y son un buen punto de partida para el manejo de errores en la mayoría de las implementaciones.
Puede configurar su conector de sumidero para dirigir todos los mensajes erróneos a una fila de letra muerta especificando las siguientes opciones:
errors.tolerance=all errors.deadletterqueue.topic.name=<name of topic to use as dead letter queue>
Si desea incluir el motivo específico del error, así como el mensaje erróneo, utilice la siguiente opción:
errors.deadletterqueue.context.headers.enable=true
Para obtener más información sobre las filas de letra muerta, consulte la guía de Confluent sobre filas de letra muerta.
Para ver otro ejemplo de configuración de la fila de letra muerta, consulte Ejemplo de configuración de la fila de letra muerta.
Para aprender sobre las excepciones que define tu conector y que escribe como encabezados de contexto en la fila de letra muerta, consulta Excepciones de escritura por lotes a granel.
Errores de registro
Puede registrar errores tolerados y no tolerados en un archivo de registro. Haga clic en las pestañas para ver cómo registrar errores:
La siguiente opción por defecto hace que Kafka Connect escriba solo los errores no tolerados en su registro de aplicación:
errors.log.enable=false
La siguiente opción hace que Kafka Connect guardar tanto los errores tolerados como los no tolerados en su registro de aplicaciones:
errors.log.enable=true
Si desea registrar metadatos sobre su mensaje, como el tema y el desplazamiento del mensaje, utilice la siguiente opción:
errors.log.include.messages=true
Para obtener más información, consulte la guía de Confluent sobre el registro con Kafka Connect.
Gestionar errores a nivel de Connector
El sink connector proporciona opciones que permiten configurar el manejo de errores a nivel de conector. Las opciones son las siguientes:
Opción de Kafka Connect | Opción de conector de Kafka para MongoDB |
|---|---|
|
|
|
|
Quieres usar estas opciones si quieres que tu conector responda de manera diferente a los errores relacionados con MongoDB que a los errores relacionados con el marco de trabajo de Kafka Connect.
Para obtener más información, consulta los siguientes recursos: