发现在如下代码中存储kafka生产者初始化失败:
config.Version = sarama.V0_10_2_1 //V2_2_0_0
producer, err := sarama.NewSyncProducer(options.Kafka.KafkaBrokerList, config)
if err != nil {
log.Printf("sarama.NewSyncProducer fail:%+v, list=%+v\n", err, options.Kafka.KafkaBrokerList)
return err
}
错误信息是:
kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
一开始以为是防火墙没开端口,但是telnet上去又是对的。
后来发现kafka的服务器版本是:0.10.2.1,而原来的代码里使用的版本是 V2_2_0_0
代码中修改版本后正常。
前人挖坑的痛苦:
1.为什么协议版本错误不返回版本错误的提示?
2.为什么协议做不到向后兼容?