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 源连接器