我正在使用c ++ kafka实现 C++ rdkafka 。 问题是关于RdKafka :: KafkaConsumer。如何将消费者设置为从主题的开头开始?
P.S。 链接中的消费者示例基于RdKafka :: Consumer,其标记为“仅遗留,使用KafkaConsumer”
提前谢谢
答案 0 :(得分:1)
这不是" auto.offset.reset"作品。 " auto.offset.reset"仅在没有有效的提交偏移量时才有效。流程如下:
如果您想在每次重启时阅读整个主题,实际上根本没有理由提交偏移量。提交偏移的目的是知道你离开的地方,因为你想在重启后从这个偏移中恢复。
答案 1 :(得分:0)
我因为这个而损失了数小时,而答案是一如既往的RTFM:)
来自this link:
高级Kafka使用者(C ++中的KafkaConsumer)将开始 如果没有,则默认使用最后提交的偏移量 先前为主题+分区提交的偏移量并将其分组 依靠 topic配置属性 auto.offset.reset 默认为最新,因此开始消耗 分区(只会使用新邮件)。
注意粗体字,我做错的是调用此:
rd_kafka_conf_set(_conf_handle, key, val, _errstr, sizeof(_errstr));
代替此:
rd_kafka_topic_conf_set(_topic_conf_handle, key, val, _errstr, sizeof(_errstr));