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
,它会给出正确的偏移量。
在使用任何消息之前,我可以调用其他一些函数来获取偏移量吗?