有没有办法允许Kafka-Avro接受来自生产者的所有密钥,即使它们没有在生产者模式中定义?目前,我正在使用
运行生产者./bin/kafka-avro-console-producer --broker-list localhost:9092 --topic elasticsearch-sink --property value.schema='{"type":"record","name":"myRecord", "fields":[{"name":"esKey", type":"string"}]}'
并传入
{"esKey":"keyExample", "undefinedKey": "empty"}
消费者只会显示
{"esKey":"keyExample"}
因此,未定义的密钥也不会发送到ElasticSearch。 由于输入非常大且不可预测,我宁愿不定义架构。
编辑:使用Confluent 4.1.1
答案 0 :(得分:0)
您的架构不允许其他字段
"fields":[{"name":"esKey", type":"string"}]
您需要为此添加undefinedKey
才能显示该字段。基本上,Avro解串器没有理由认为其他字段应该存在。
由于输入量很大且不可预测,我宁愿不定义架构。
不清楚这意味着什么,但是如果您具有不可预测的数据,那么也许不是Avro或任何严格定义的架构协议,不是最佳选择吗?