对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

连接器错误处理属性

使用以下配置设置指定 MongoDB Kafka connector 如何处理错误并配置死信队列(DLQ)。

有关按类别组织的接收器连接Connector配置设置列表,请参阅接收器连接器配置属性指南。

名称
说明

mongo.errors.tolerance

类型: string

说明:
连接器出错时是否继续处理消息。允许连接器覆盖 errors.tolerance Kafka 集群设置。

当设置为 none 时,连接器会报告任何错误,并阻止对其余消息的进一步处理。

当设置为 all 时,连接器会忽略任何有问题的消息。

当设置为 data 时,连接器只能容忍数据错误,并对所有其他错误失败。

要了解有关错误处理策略的更多信息,请参阅 处理错误 页面。

此属性覆盖 errors.tolerance
Connect 框架的属性。

默认:errors.tolerance 设置继承值。
可接受值: "none""all"

mongo.errors.log.enable

类型:布尔值

说明:
连接器是否应将错误详情(包括失败的操作)写入日志文件。连接器使用 errors.tolerancemongo.errors.tolerance 设置将错误分类为“可容忍”或“不可容忍”。

当设置为 true 时,连接器会记录“可容忍”和“不可容忍”错误。
当设置为 false 时,连接器会记录“不可容忍”错误。

此属性会覆盖 Connect Framework 的 errors.log.enable
Connect 框架的属性。

默认值: false
可接受值truefalse

errors.log.include.messages

类型:布尔值

说明:
连接器是否应在记录错误时包含无效消息。无效消息包含记录密钥、值和头部等数据。

默认: false
接受值truefalse

errors.deadletterqueue.topic.name

类型: string

说明:
用作死信队列(DLQ)的主题名称。如果为空,连接器将不会将任何无效消息发送到死信队列(DLQ)。

要了解有关死信队列(DLQ)的更多信息,请参阅死信队列(DLQ)配置示例

默认: ""
接受的值:有效的 Kafka 主题名称

errors.deadletterqueue.context.headers.enable

类型:布尔值

说明:
连接器在将消息写入死信队列(DLQ)时是否包含上下文标头。

要了解有关死信队列(DLQ)的更多信息,请参阅死信队列(DLQ)配置示例

要了解连接器通过上下文标头定义和报告的异常,请参阅批量写入异常

默认: false
可接受值truefalse

errors.deadletterqueue.topic.replication.factor

类型:整数

说明:
复制死信队列(DLQ)主题的节点数。如果您运行单节点 Kafka 集群,则必须将其设置为 1

要了解有关死信队列(DLQ)的更多信息,请参阅死信队列(DLQ)配置示例

默认: 3
可接受值:有效节点数

执行批量写入时,connector可以将以下异常作为上下文标头报告到死信队列(DLQ):

名称
说明

WriteException

描述:
包含连接器遇到的 BulkWriteError 的详细信息。

消息格式:

此类按以下格式输出错误:

v=%d, code=%d, message=%s, details=%s

上述消息中的字段包含以下信息:

  • vWriteException消息格式的版本。 此字段有助于解析此异常生成的消息。 对于版本 1.14 的connector ,消息格式的版本为 1。

  • code:与错误相关的代码。要学习;了解更多信息,请参阅 getCode() 方法文档。

  • message:与错误相关的消息。要学习;了解更多信息,请参阅 getMessage() 方法文档。

  • details:与 JSON 格式的错误相关的详细信息。 要了解更多信息,请参阅以下方法文档:

WriteConcernException

描述:
包含连接器遇到的 WriteConcernError 的详细信息。

消息格式:

此类按以下格式输出错误:

v=%d, code=%d, codeName=%d, message=%s, details=%s

上述消息中的字段包含以下信息:

  • vWriteConcernException消息格式的版本。 此字段有助于解析此异常生成的消息。 对于版本 1.14 的connector ,消息格式的版本为 1。

  • code:与错误相关的代码。要学习;了解更多信息,请参阅 getCode() 方法文档。

  • codeName:与错误相关的代码名称。要学习;了解更多信息,请参阅 getCodeName() 方法文档。

  • message:与错误相关的消息。要学习;了解更多信息,请参阅 getMessage() 方法文档。

  • details:与 JSON 格式的错误相关的详细信息。 要了解更多信息,请参阅以下方法文档:

WriteSkippedException

描述:
通知 MongoDB 未尝试在以下场景中写入 SinkRecord

  1. connector向 MongoDB 发送有序批量写入操作

  2. MongoDB 无法处理有序批量写入中的写入操作

  3. MongoDB 不会尝试以有序批量写入的方式执行所有后续写入操作。

要了解如何将 Connector 设置为执行无序批量写入操作,请参阅《Connector 消息处理属性》页面。
消息格式:

此异常不产生任何消息。

要启用向死信队列(DLQ)报告批量写入异常,请使用以下connector配置:

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

Apache Kafka 2.6 版本增加了对处理错误记录的支持。 Kafka Connector会自动将其无法处理的消息发送到死信队列(DLQ)。一旦进入死信队列(DLQ),您可以检查错误记录,更新它们,然后重新提交以进行处理。

以下是启用死信队列(DLQ)主题example.deadletterqueue的示例配置。此配置指定死信队列(DLQ)和日志文件应记录无效消息,并且死信队列(DLQ)消息应包含上下文标头。

mongo.errors.tolerance=all
mongo.errors.log.enable=true
errors.log.include.messages=true
errors.deadletterqueue.topic.name=example.deadletterqueue
errors.deadletterqueue.context.headers.enable=true

要了解有关死信队列(DLQ)的更多信息,请参阅向主题写入错误和错误消息。