我正在尝试以 avro 格式使用 Kafka 消息,但我无法在 Go 中将消息从 avro 解码为 json。
我正在使用 Confluent 平台(3.0.1)。例如,我生成 avro 消息,例如:
kafka-avro-console-producer --broker-list localhost:9092 --topic test --property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}'
{"f1":"message1"}
{"f1":"message2"}
现在我使用 go Kafka 库消费消息:sarama。纯文本消息工作正常。Avro 消息必须被解码。我发现了不同的库:github.com/linkedin/goavro、github.com/elodina/go-avro
但是解码后我得到一个没有值的json(两个库):
{"f1":""}
戈夫罗:
avroSchema := `
{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}
`
codec, err := goavro.NewCodec(avroSchema)
if err != nil {
log.Fatal(err)
}
bb := bytes.NewBuffer(msg.Value)
decoded, err := codec.Decode(bb)
log.Println(fmt.Sprintf("%s", decoded))
继续前进:
schema := avro.MustParseSchema(avroSchema)
reader := avro.NewGenericDatumReader()
reader.SetSchema(schema)
decoder := avro.NewBinaryDecoder(msg.Value)
decodedRecord := avro.NewGenericRecord(schema)
log.Println(decodedRecord.String())
msg = sarama.ConsumerMessage
弑天下
忽然笑
相关分类