我花了一些时间发现连接到Kafka 0.11集群的Go应用程序使用的是旧的0.8.2版本的库,它缺少响应中的Timestamp值。
然后我发现Kafka 0.11.x API /版本不受支持(但他们正在努力)。
我现在有两种解决方案。
首先在我的应用中明确设置所需的版本。 其次是"调和" Sarama代码使用0.10.x版本作为最低版本,使我能够使用所有0.10.x API /功能。
我仍然想知道为什么这个版本不是来自我连接的Kafka经纪人?
我无法理解它应该如何使用代码...我清楚地看到sarama.Config.Version中设置或定义的版本,但我无法理解一旦连接到经纪人,找到任何更新此值的内容?
我知道Python正是这样做的:
from kafka import BrokerConnection
broker=BrokerConnection("localhost",9092,0)
broker.connect()
broker.check_version()
(0,11,0)
我错过了什么?
答案 0 :(得分:1)
据我所知,我不确定Sarama是否自行处理经纪人版本的搜索。
从我的角度来看,需要在Producer / Broker / Client的config参数中定义要使用的API版本,如:
config := sarama.NewConfig()
config.Version=sarama.V0_10_2_0
此外,Sarama尚不支持0.11.0(2017年9月),因此请使用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