go - Kafka 0.11/Golang Sarama 版本支持

标签 go apache-kafka sarama

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

然后我发现不支持 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)

我错过了什么?

最佳答案

就我所知,我不确定 Sarama 是否会自行处理代理版本的搜索。

从我的角度来看,需要在 Producer/Broker/Client 的配置参数中定义要使用的 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

关于go - Kafka 0.11/Golang Sarama 版本支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409425/

相关文章:

go - 如何从开始到特定偏移量消耗消息

go - 如何在 sarama 中获得多个订阅

oop - Go 中的构造函数

Golang解码没有键/值的数组来构造

go - HTTP重用连接条件

postgresql - Debezium Postgres和ElasticSearch-在ElasticSearch中存储复杂对象

multithreading - 在 amd64 上拆分堆栈是不必要的

java - 如何等待 `ReplyingKafkaTemplate` 的下一个响应?

scala - 使用 Spark Structured Streaming 时限制 kafka 批量大小