从kafka获取最后写入的消息偏移量编号

时间:2018-10-05 12:14:24

标签: c apache-kafka kafka-producer-api

我正在向名为default的主题发送消息。

我的生产者分区是RD_KAFKA_PARTITION_UA,当我使用未分配的分区时,如何获取推送到default主题的最后一条消息的偏移量。

我不需要消费者的补偿,我需要上次发布的消息的补偿。

我需要补偿来进行崩溃恢复,而不需要人工干预。

我需要使用librdkafka进行偏移,当我的程序重新启动时,根据偏移,我将对程序进行一些修改,因此我只需要在需要时通过API来获取它。

我认为我不能依靠回调,

考虑我推送了消息,收到了回调并且程序崩溃了。

我推送了消息,我将要轮询,并且程序崩溃了。

我正在使用C语言librdkafka库。

1 个答案:

答案 0 :(得分:0)

可以使用生产者的交货报告轻松完成此操作。

其中一个librdkafka示例rdkafka_example.c演示了此功能。

例如:

./rdkafka_example -P -b localhost:9092 -t testtopic -o report
% Type stuff and hit enter to send
hello
del: Success: offset 0
% Message delivered (5 bytes, offset 0, partition 0): hello
hello
% Sent 5 bytes to topic testtopic partition -1
del: Success: offset 1
% Message delivered (5 bytes, offset 1, partition 0): hello
^Cdel: Success: offset 2
% Message delivered (5 bytes, offset 2, partition 0): hello

对于发送的每条消息,您都会看到传递报告包含产生的消息的偏移量。

基本上这个例子:

  • 设置produce.offset.report=true [1]
  • 注册交货报告[2]
  • 在交货报告中,访问偏移量字段[3]