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:
Escribes en un tema usando la serialización de Avro e intentas decodificar tus mensajes de ese tema usando la deserialización de Protobuf
Utilice un controlador de captura de datos de cambio 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 su conector detecta un error, necesita gestionarlo de alguna manera. Su conector receptor puede hacer lo siguiente en respuesta a un error:
Detenerse ante todos los errores predeterminado
Detenerse ante todos los errores
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 su conector de receptor falla, debe realizar una de las siguientes acciones y luego reiniciar su conector para reanudar el procesamiento de mensajes:
Permita que el conector del fregadero tolere errores temporalmente
Actualice la configuración de su conector de sumidero para permitirle procesar el mensaje
Eliminar el mensaje erróneo de su tema
Puede hacer que el conector del fregadero 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.
Puede hacer que el conector de su fregadero 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 de datos
Puede configurar su conector receptor para que solo tolere errores de datos y detenga el procesamiento de todos los demás. Con esta configuración, el conector envía los errores de datos a la cola de mensajes fallidos, si está configurada.
Configure su conector de sumidero para tolerar únicamente errores de datos especificando la siguiente opción:
errors.tolerance=data
Escribir errores y mensajes erróneos en un tema
Puede configurar su conector de receptor para que escriba errores y mensajes erróneos en un tema, denominado cola de mensajes no entregados, para su inspección o procesamiento posterior. Una cola de mensajes no entregados es una ubicación en sistemas de colas de mensajes como Apache Kafka donde el sistema enruta los mensajes erróneos en lugar de bloquearse o ignorar el error. Las colas de mensajes no entregados combinan la retroalimentación de detener el programa con la durabilidad de tolerar todos los errores y son un buen punto de partida para la gestión de errores en la mayoría de las implementaciones.
Puede hacer que su conector de sumidero enrute todos los mensajes erróneos a una cola de mensajes no entregados 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 colas de mensajes no entregados, consulte la guía de Confluent sobre colas de mensajes no entregados.
Para ver otro ejemplo de configuración de cola de cartas muertas, consulte Ejemplo de configuración de cola de cartas muertas.
Para obtener más información sobre las excepciones que su conector define y escribe como encabezados de contexto en la cola de mensajes no entregados, consulte Excepciones de escritura masiva.
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 predeterminada hace que Kafka Connect escriba solo errores no tolerados en su registro de aplicaciones:
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.
Manejar errores a nivel de conector
El conector de sumidero ofrece opciones que permiten configurar la gestión de errores a nivel de conector. Las opciones son las siguientes:
Opción de conexión de Kafka | Opción de conector de Kafka para MongoDB |
|---|---|
|
|
|
|
Debe utilizar estas opciones si desea que su conector responda de manera diferente a los errores relacionados con MongoDB que a los errores relacionados con el marco de Kafka Connect.
Para obtener más información, consulte los siguientes recursos: