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, puedes aprender cómo gestionar errores en tu conector de sumidero MongoDB Kafka. La siguiente lista muestra algunos escenarios comunes que causan que tu conector de destino experimente un error:

  • 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 tu conector de sumidero encuentra un error hace 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:

  • Permite que tu conector de destino tolere temporalmente errores

  • 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 añadiendo lo siguiente a tu configuración de conector:

errors.tolerance=none

Puede configurar el conector del destino para que tolere todos los errores y nunca deje de procesar mensajes. Esta es una buena opción para poner en funcionamiento tu conector de lavabo rápidamente, pero corres el riesgo de pasar por alto problemas en tu conector, ya que no recibirás ningún aviso si algo sale mal.

Puedes permitir que tu conector de salida tolere todos los errores especificando la siguiente opción:

errors.tolerance=all

Advertencia

Los guardados en bloque ordenados pueden generar mensajes omitidos

Si configuras tu conector para tolerar errores y utilizas guardados por lotes ordenados, podrías perder datos. Si configuras tu conector para tolerar errores y usar guardados masivos desordenados, perderás menos datos. Para obtener más información sobre las operaciones de escritura masiva, consulta la Guardar la página de Estrategias de modelos.

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 deseas incluir el motivo específico del error, así como el mensaje erróneo, utiliza 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.

Puedes registrar los errores tolerados y no tolerados en un archivo de registro. Haz 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 deseas registrar metadatos sobre tu mensaje, como el tema y el offset de tu mensaje, utiliza la siguiente opción:

errors.log.include.messages=true

Para obtener más información, consulte la guía de Confluent sobre registro (logging) 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