【发布时间】:2020-07-24 04:59:43
【问题描述】:
librdkafka 包含函数rd_kafka_position,它获取给定主题分区的当前偏移量。但评论说:
The \p offset field of each requested partition will be set to the offset of the last consumed message + 1, or RD_KAFKA_OFFSET_INVALID in case there was no previous message.
换句话说,如果还没有消息被消费,它不会给你任何有用的信息。
我对我刚刚订阅了一个主题的情况感兴趣,并且我已经给 rd_kafka_seek 打了电话:
- 寻找已知位置(在错误恢复的情况下),或
- 搜索到分区的最后。
在这种情况下,我想知道的是下一条消息的偏移量是什么如果要被消费。换句话说,在第一种情况下,它应该是传递给rd_kafka_seek的相同偏移量,在第二种情况下,它应该是1加上rd_kafka_seek时分区中最后一条消息的偏移量调用。
不幸的是,正如评论所说,rd_kafka_position 不返回此信息。如果还没有消息被消费,它会给出-1001 (RD_KAFKA_OFFSET_INVALID)。如果我使用一条消息然后调用rd_kafka_position,它会给出正确的偏移量。
我是否可以调用其他函数来获取在消费任何消息之前的偏移量?
【问题讨论】:
标签: c apache-kafka librdkafka