首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过golang向kafka推送avro格式的消息

通过golang向kafka推送avro格式的消息
EN

Stack Overflow用户
提问于 2020-01-30 17:37:15
回答 1查看 1.5K关注 0票数 1

我试图通过confluent go客户端向kafka推送一些消息,但问题是消息需要以avro格式推送。在java springboot应用程序中也可以很容易地实现这一点。

我有一种预感,如果通过confluent go客户端,这一切都是可能的。虽然我有一个替代方案来通过融合的rest代理推送这些消息,但这将意味着3-4倍的性能损失,我将拒绝这样做。

我试着用goAvro来转换avro中的消息。虽然我在生产时没有得到任何错误,但数据部分不是以avro格式存储的。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2020-01-30 22:43:59

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59982917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档