go - 通过golang将消息以avro格式推送到kafka

标签 go apache-kafka avro confluent-schema-registry

我试图通过融合的go client将一些消息推送到kafka,但是要注意的是消息需要以avro格式推送。在java springboot应用程序中同样可以轻松实现。

我有一种预感,好像所有这些都可以通过融合的go client实现。虽然我可以选择通过融合的REST代理推送这些消息,但这将意味着性能会降低3-4倍,这是我抵制的。

我尝试了goAvro将消息转换为avro。虽然我在制作时没有出现任何错误,但是数据部分没有以avro格式存储。
enter image description here

avroCodec, err := goavro.NewCodec(schemaString)

if err != nil {
    log.Panic(err.Error())
}

appointmentByte,_ := json.Marshal(appointment)

native, _, _ := avroCodec.NativeFromTextual(appointmentByte)

binaryValue, _ := avroCodec.BinaryFromNative(nil,  native)

var recordValue []byte

schemaIDBytes := make([]byte, 4)
binary.BigEndian.PutUint32(schemaIDBytes, uint32(id))

recordValue = append(recordValue, byte(0))
recordValue = append(recordValue, schemaIDBytes...)
recordValue = append(recordValue, binaryValue...)

log.Print(recordValue)

key, _ := uuid.NewUUID()

fmt.Print(key.String())
p.Produce(&kafka.Message{
    TopicPartition: kafka.TopicPartition{
        Topic: &topic, Partition: kafka.PartitionAny},
    Key: []byte(key.String()), Value: recordValue}, nil)

最佳答案

您可以在Github上搜索问题的解决方案。它目前不是项目的一部分,但正在开发中

https://github.com/confluentinc/confluent-kafka-go/issues/69

关于go - 通过golang将消息以avro格式推送到kafka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982917/

相关文章:

java - 使用 Confluence Kafka Avro Serializer 进行 Spring Kafka 测试找不到 ZKClientConfig

go - 为什么 go get -u 在模块目录中需要很长时间,但在 golang 中却很快完成?

c# - Protobuf 解码任意消息。 Protobuf 消息多态性

rest - 使用 REST API 存储、流式传输视频和处理请求

apache-kafka - 如何获取单个消费者的消费组

apache-kafka - Kafka 流中的映射操作后双引号中的字符串

apache-kafka - 为什么在 Confluence 的模式注册表中使用主题?

arrays - 从两个 slice 的重复项创建一个 slice

linux - kafka-server-stop.sh 不适用于 RedHat7

python - 使用 beam、python 读取具有 Avro 模式的 Big Query 表