MongoDB Kafka 连接器中的 delete.on.null.values 不起作用

Posted

技术标签:

【中文标题】MongoDB Kafka 连接器中的 delete.on.null.values 不起作用【英文标题】:delete.on.null.values in MongoDB Kafka Connector not working 【发布时间】:2021-04-10 23:03:06 【问题描述】:

我正在使用 MongoDB Kafka 连接器,我能够成功创建和更新记录,但无法删除连接器配置中的记录我正在使用此配置


"name": "mongo-sink",
"config": 
    "connector.class": "com.mongodb.kafka.connect.MongoSinkConnector",
    "tasks.max": "1",
    "topics": "test",
    "connection.uri": "mongodb://mongo1:27018,mongo2:27019,mongo3:27020",
    "database": "accounting",
    "collection": "test",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "value.converter": "io.confluent.connect.avro.AvroConverter",
    "value.converter.schema.registry.url": "http://schema-registry:8081",
    "value.converter.schemas.enable": "false",
    "document.id.strategy": "com.mongodb.kafka.connect.sink.processor.id.strategy.PartialKeyStrategy",
    "document.id.strategy.partial.key.projection.list":"productId",
    "document.id.strategy.partial.key.projection.type":"ALLOWLIST",
    "writemodel.strategy":"com.mongodb.kafka.connect.sink.writemodel.strategy.ReplaceOneBusinessKeyStrategy",
    "delete.on.null.values": "true",
    "transforms":"WrapKey",
    "transforms.WrapKey.type":"org.apache.kafka.connect.transforms.HoistField$Key",
    "transforms.WrapKey.field":"_id"

如果我发送空记录,文档更新为空而不删除任何想法,则无法删除记录?

【问题讨论】:

你如何发送你的空记录?您可以在问题中添加您的消息示例吗? @AmitSingh 这是我的消息 key: "898900", value: productId: 1, productName: null , headers: type: "test-value", subject: "test-value ",correlationId: '测试', 这是您要删除的邮件? 是的,我也将 productid 和 Name 都设为 null,但运气不好,它会用 null 更新两条记录 对于删除,您的值应设置为 null,因此您的键:“898900”和值:null 【参考方案1】:

如MongoDB Sink 文档中所述,

删除.on.null.values

布尔值

值为空时,连接器是否应该删除具有匹配键值的文档。

您必须将消息设置为以下格式:

"key" : "xyz", "value" : null, ... 

【讨论】:

我可以删除与projection.list匹配的记录吗? Projection.list 用于将字段列入白名单或黑名单,对吗? 那么你建议如何使用它来匹配?您能否在问题中提供相同的详细信息?

以上是关于MongoDB Kafka 连接器中的 delete.on.null.values 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Debezium Kafka 连接器 mongodb:将 kafka 连接器连接到 mongodb 时出错

MongoDB Sink 连接器:Apache Kafka 中的消息被截断

在远程 MSK kafka 集群上使用 kafka 连接 mongoDB debezium 源连接器

如何停止 mongodb-kafka 连接器停止

Kafka Connect - MongoDB 源连接器 - 管道不工作

Debezium Kafka 连接器 mongodb