Docs 菜单
Docs 主页
/
MongoDB Kafka Connector
/ /

Error Handling

在此页面上

  • Overview
  • 处理错误
  • 出现所有错误时停止
  • 容许所有错误
  • 容忍数据错误
  • 将错误和错误消息写入主题
  • 记录错误
  • 在connector级别处理错误

在本指南中,您可以了解如何处理 MongoDB Kafka connector 中的错误。以下列表显示了导致接收器connector出现错误的一些常见情况:

  • 您使用 Avro 序列化写入主题,并尝试使用 Protobuf 反序列化从该主题解码消息

  • 对不包含变更事件文档的消息使用变更数据捕获处理程序

  • 您对传入文档应用无效的单个消息转换

当你的 sink connector 遇到错误时,它会执行两个操作:

  • 处理错误

  • 记录错误

当connector遇到错误时,它需要以某种方式进行处理。接收器连接器可以执行以下操作来响应错误:

默认情况下,接收器连接器会在遇到错误时终止并停止处理消息。 如果接收器connector中的任何错误表明存在严重问题,这对您来说是一个不错的选择。

当接收器connector崩溃时,您必须执行以下操作之一,然后重新启动connector才能恢复处理消息:

  • 允许 SinkConnector暂时容忍错误

  • 更新接收器连接器的配置以允许其处理消息

  • 从主题中删除错误消息

您可以通过不为 errors.tolerance选项指定任何值,或将以下内容添加到连接器配置中,让 Sink 连接器在遇到错误时停止:

errors.tolerance=none

您可以将接收器connector配置为容许所有错误并永不停止处理消息。对于让 Sink connector 快速启动并运行,这是一个不错的选择,但您可能会遗漏 connector 中的问题,因为如果出现问题,您不会收到任何反馈。

您可以通过指定以下选项让 Sink connector容忍所有错误:

errors.tolerance=all

警告

有序批量写入可能导致跳过消息

如果设立Connector设置为容错并使用有序批量写入,则可能会丢失数据。 如果设立Connector设置为容许错误并使用无序批量写入,则丢失的数据会更少。 要学习;了解有关批量写入操作的更多信息,请参阅写入模型策略页面。

您可以将接收器connector配置为仅允许数据错误,并停止处理所有其他错误。 通过此设置, connector会将数据错误发送到死信队列(如果已配置)。

通过指定以下选项,将 Sink connector配置为仅允许数据错误:

errors.tolerance=data

您可以将您的connector配置为将错误和错误消息写入名为死信队列(DLQ)的主题,以供您进一步检查或处理。死信队列(DLQ)是 Apache Kafka 等消息队列系统中的一个位置,系统在其中路由错误消息,而不是崩溃或忽略错误。死信队列(DLQ)将停止程序的反馈与容忍所有错误的持久性结合起来,是大多数部署的良好错误处理起点。

您可以通过指定以下选项,让 Sink connector 将所有错误消息路由到死信队列(DLQ):

errors.tolerance=all
errors.deadletterqueue.topic.name=<name of topic to use as dead letter queue>

如果要包含错误的具体原因以及错误消息,请使用以下选项:

errors.deadletterqueue.context.headers.enable=true

要学习;了解有关死信队列的更多信息,请参阅 Confluence 的 死信队列 指南。

要查看另一个死信队列(DLQ)配置示例,请参阅死信队列(DLQ)配置示例。

要了解connector定义并作为上下文标头写入死信队列(DLQ)的异常,请参阅批量写入异常。

您可以将允许和不允许的错误记录到日志文件中。 单击标签页可查看如何记录错误:

以下默认选项使 Kafka Connect 仅将无法容忍的错误写入其应用程序日志:

errors.log.enable=false

以下选项使Kafka Connect写入容许和不可容许的错误写入其应用程序日志:

errors.log.enable=true

如果要记录有关消息的元数据,例如消息的主题和偏移量,请使用以下选项:

errors.log.include.messages=true

有关更多信息,请参阅 Confluence 的 Kafka Connect 日志记录指南。

接收器连接器提供允许您在连接器级别配置错误处理的选项。 选项如下:

Kafka Connect 选项
MongoDB Kafka Connector 选项
errors.tolerance
mongo.errors.tolerance
errors.log.enable
mongo.errors.log.enable

如果您希望connector对 MongoDB 相关错误和 Kafka 框架相关错误的响应方式不同,则需要使用这些选项。

有关更多信息,请参阅以下资源:

后退

后处理器