C ++ kafka客户端(rdkafka)

时间:2016-07-31 14:38:20

标签: c++ apache-kafka kafka-consumer-api

我正在使用c ++ kafka实现 C++ rdkafka 。 问题是关于RdKafka :: KafkaConsumer。如何将消费者设置为从主题的开头开始?

P.S。  链接中的消费者示例基于RdKafka :: Consumer,其标记为“仅遗留,使用KafkaConsumer”

提前谢谢

2 个答案:

答案 0 :(得分:1)

这不是" auto.offset.reset"作品。 " auto.offset.reset"仅在没有有效的提交偏移量时才有效。流程如下:

  1. 启动消费者(重启或崩溃后)
  2. 寻找偏移量
    • 如果找到,请从偏移中恢复
    • 如果未找到,请根据auto.offset.reset设置偏移量。
  3. 如果您想在每次重启时阅读整个主题,实际上根本没有理由提交偏移量。提交偏移的目的是知道你离开的地方,因为你想在重启后从这个偏移中恢复。

答案 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));