go版本kafka的坑

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中查

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容