go版本kafka的坑

2022-12-13  本文已影响0人  潘雪雯

sarama.StringEncoder 和sarama.ByteEncoder的区别

在推送kafka的sarama.ProducerMessage中,

m := &sarama.ProducerMessage{
            Topic: topic,
            Value: sarama.StringEncoder(buf),
        }

在Value选择编码方式时,如果选择ByteEncoder, 在后面的批量发送kafka k.producer.SendMessages(msgs) 的时候,会出现问题,问题就是发到kafka的数据每条数据都是一样的。但是用单次发送k.producer.SendMessage(msg)是没问题的。
但是问题是单次发送的效率太低了,最好使用批量发送的方式。这个时候就要选择sarama.StringEncoder方式,不然太坑了,这个问题让我查了一天, 一直以为是go的append改变了发送数据的格式呢

https://github.com/Shopify/sarama/issues/1625

感悟:
遇到这种问题,真得找到地方去查,比如我现在用到kafka的问题,就应该去github库对应的issue中查

上一篇下一篇

猜你喜欢

热点阅读