卡夫卡0.11/Golang Sarama版本支持

卡夫卡0.11/Golang Sarama版本支持,go,apache-kafka,sarama,Go,Apache Kafka,Sarama,我花了一些时间发现连接到Kafka 0.11集群的Go应用程序使用的是旧的0.8.2版本的库,该库在响应中缺少时间戳值 然后,我发现Kafka 0.11.x API/version不受支持,但他们正在对此进行研究 我现在有两个解决方案 首先是在我的应用程序中明确设置所需的版本。 第二是优化Sarama代码,使其使用0.10.x版作为最低版本,使我能够使用所有0.10.x API/功能 我还在想为什么这个版本不是从我连接的卡夫卡经纪人那里得到的 我不明白从代码看它是怎么工作的。。。我清楚地看到了在

我花了一些时间发现连接到Kafka 0.11集群的Go应用程序使用的是旧的0.8.2版本的库,该库在响应中缺少时间戳值

然后,我发现Kafka 0.11.x API/version不受支持,但他们正在对此进行研究

我现在有两个解决方案

首先是在我的应用程序中明确设置所需的版本。 第二是优化Sarama代码,使其使用0.10.x版作为最低版本,使我能够使用所有0.10.x API/功能

我还在想为什么这个版本不是从我连接的卡夫卡经纪人那里得到的

我不明白从代码看它是怎么工作的。。。我清楚地看到了在sarama.Config.version中设置或定义的版本,但是一旦连接到代理,我找不到任何东西来更新这个值

我知道Python是这样做的:

from kafka import BrokerConnection
broker=BrokerConnection("localhost",9092,0)
broker.connect()
broker.check_version()
0,11,0


我遗漏了什么?

就我所知,我不确定Sarama自己是否能够处理代理版本的搜索

在我看来,需要定义要在Producer/Broker/Client的配置参数中使用的API版本,如:

config := sarama.NewConfig()
config.Version=sarama.V0_10_2_0
此外,Sarama在2017年9月还不支持0.11.0,因此请使用0.10.2.0访问最新的API

最后,要使用第二种解决方案,请编辑文件Shopify/sarama/utils.go,并在末尾添加您的版本:

V0_11_0_0  = newKafkaVersion(0, 11, 0, 0)
V0_11_0  = newKafkaVersion(0, 11, 0, 0)
minVersion = V0_11_0_0