Mongodb kafka接收器连接器中无效JSON的错误处理

Mongodb kafka接收器连接器中无效JSON的错误处理,mongodb,error-handling,apache-kafka,apache-kafka-connect,Mongodb,Error Handling,Apache Kafka,Apache Kafka Connect,我有一个用于mongodb的接收器连接器,它从一个主题获取json并将其放入mongodb集合。但是,当我从制作人向该主题发送一个无效的JSON时(例如,带有无效的特殊字符”)=>{“id”:1,“name”:“\”},连接器停止。我尝试使用errors.tolerance=all,但发生了相同的情况。应该发生的是连接器应该跳过并记录无效的JSON,并保持连接器运行。我的分布式模式连接器如下所示: { "name": "sink-mongonew_test1", "config":

我有一个用于mongodb的接收器连接器,它从一个主题获取json并将其放入mongodb集合。但是,当我从制作人向该主题发送一个无效的JSON时(例如,带有无效的特殊字符”)=>
{“id”:1,“name”:“\”}
,连接器停止。我尝试使用errors.tolerance=all,但发生了相同的情况。应该发生的是连接器应该跳过并记录无效的JSON,并保持连接器运行。我的分布式模式连接器如下所示:

{
  "name": "sink-mongonew_test1",  
  "config": {
    "connector.class": "com.mongodb.kafka.connect.MongoSinkConnector",
    "topics": "error7",
    "connection.uri": "mongodb://****:27017", 
    "database": "abcd", 
    "collection": "abc",
    "type.name": "kafka-connect",
    "key.ignore": "true",

    "document.id.strategy": "com.mongodb.kafka.connect.sink.processor.id.strategy.PartialValueStrategy",
    "value.projection.list": "id",
    "value.projection.type": "whitelist",
    "writemodel.strategy": "com.mongodb.kafka.connect.sink.writemodel.strategy.UpdateOneTimestampsStrategy",

    "delete.on.null.values": "false",

    "key.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "key.converter.schemas.enable": "false",
    "value.converter.schemas.enable": "false",

    "errors.tolerance": "all",
    "errors.log.enable": "true",
    "errors.log.include.messages": "true",
    "errors.deadletterqueue.topic.name": "crm_data_deadletterqueue",
    "errors.deadletterqueue.topic.replication.factor": "1",
    "errors.deadletterqueue.context.headers.enable": "true"
  }
}
自Apache Kafka 2.0以来,Kafka Connect已包含错误处理选项,包括将消息路由到死信队列的功能,这是构建数据管道的常用技术

如前所述,您使用的是
connect-api-1.0.1.*.jar
,版本1.0.1,这就解释了为什么这些属性不起作用


除了运行较新版本的Kafka Connect之外,您还可以选择Nifi或Spark结构化流媒体

为什么生成无效的json?以及如何生成?如果您使用任何json库,它都不会生成无效的json字符串。您使用的Connect版本是什么?@cricket_007我正在构建一个Kafka streams应用程序,其中存在无效JSON的可能性。connect的版本是connect-api-1.0.1.3.0.0.0-1634.jar,而kafka的版本又是3.0,不清楚制作人是如何创建无效JSON的。kafka Streams有自己的错误处理,你无论如何都应该过滤掉无效记录……kafka没有3.0版本。Confluent Platform 3.0确实很旧,相对来说比较简单peaking.HDP3.0使用Kafka 1.x,我想……如果你安装了HDF,Cloudera会建议你使用Nifih。你读过这篇文章吗?这是我唯一应该替换的jar吗(用最新版本)在kafka?No.内的libs文件夹中,该文件夹导入诸如kafka客户端、kafka_2.11和zookeeper-3.4.13等JAR,连接utils等。您不需要使用Hortonworks提供的kafka connect。只需在相同的计算机上下载最新的kafka库,并为connect Distributed配置较新的属性文件,然后在您的计算机上运行它现有Kafka引导服务器。Cloudera无论如何都不正式支持Kafka Connect API,所以你真的需要自己解决问题