【发布时间】:2017-07-17 22:13:53
【问题描述】:
我正在使用 librdkafka 的 c++ 客户端和 Confluent 的 dotnet 客户端来消费消息。 dotnet 版本消耗给定主题和分区的所有记录,但 c++ 客户端最多只消耗同一主题和分区的 10 条记录。我已经玩过https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md 这里给出的属性,所以两个版本都具有相同的配置,但还没有任何工作。有谁知道为什么会这样?
【问题讨论】:
-
他们在同一个组(group.id)吗?如果是这样;您是否在 C++ 客户端之前运行了 .NET 客户端?这将使随后的 C++ 运行获取 .NET 客户端的已提交偏移量,并且仅使用新消息。您可以通过在 C++ 上使用唯一的 group.id 并设置 auto.offset.reset=earliest 来验证这一点。
-
感谢您的快速回复。我更改了 group.id 并设置了 auto.offset.reset=earliest 但我仍然得到相同的总记录子集,并且 msg->len() 永远不会返回大于 11331 的任何内容。
-
如果您提供您的消费者配置会有所帮助。
-
对于 C# 消费者我有 var config = new Dictionary
{ { "group.id", "advanced-csharp-consumer" }, { "enable.auto.commit", true }, { "auto.commit.interval.ms", 5000 }, { "bootstrap.servers", brokerList }, { "fetch.message.max.bytes", 50 }, { "default.topic.config",新字典 () { { "auto.offset.reset", "smallest" } } } }; -
对于 C++ 消费者,我有以下 conf->set("auto.offset.reset", "earliest", errstr); conf->set("default_topic_conf", tconf, errstr);
标签: c++ apache-kafka