Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Error Handling

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:

  • Gestiona el error

  • Registra el error

Cuando el conector encuentra un error, debe gestionarlo de alguna manera. Su conector de sink puede hacer lo siguiente en respuesta a un 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

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.

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

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.

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.

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

errors.tolerance

mongo.errors.tolerance

errors.log.enable

mongo.errors.log.enable

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:

Volver

Postprocesadores

En esta página