2017-09-25 109 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