登录
首页 >  Golang >  Go问答

使用golang将数据以Avro格式发送到Kafka

来源:stackoverflow

时间:2024-03-06 15:33:27 262浏览 收藏

从现在开始,努力学习吧!本文《使用golang将数据以Avro格式发送到Kafka》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我试图通过 confluence go 客户端向 kafka 推送一些消息,但问题是消息需要以 avro 格式推送。同样可以在 java springboot 应用程序中轻松实现。

我有一种预感,好像这可以通过 confluence go 客户端实现。虽然我有另一种方法可以通过融合休息代理推送这些消息,但这意味着 3-4 倍的性能损失,我会拒绝这样做。

我尝试使用 goavro 将消息转换为 avro 格式。虽然我在生成时没有收到任何错误,但数据部分没有以 avro 格式存储。

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

理论要掌握,实操不能落!以上关于《使用golang将数据以Avro格式发送到Kafka》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>