2017-09-25 134 views
0

我花了一些时间发现连接到Kafka 0.11群集的Go应用程序正在使用库的旧版本0.8.2,它在响应中缺少Timestamp值。Kafka 0.11/Golang Sarama版本支持

然后我发现Kafka 0.11.x API /版本不被支持(但他们正在处理它)。

我现在有两种解决方案。

首先是在我的应用程序中明确设置所需版本。 其次是“调整”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)

我缺少什么?

回答

0

就我而言,我不确定萨拉玛是否自己处理经纪人版本的搜索。

从我的角度来看,一个需要定义要在的配置参数使用API​​版本的制作人/经纪人/客户端,如:

config := sarama.NewConfig() 
config.Version=sarama.V0_10_2_0 

而且,萨拉马不支持0.11.0但(2017年9月),所以请使用0.10.2.0来访问最新的API。

Finaly,使用第二个解决方案,编辑文件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