我正在向名为default
的主题发送消息。
我的生产者分区是RD_KAFKA_PARTITION_UA
,当我使用未分配的分区时,如何获取推送到default
主题的最后一条消息的偏移量。
我不需要消费者的补偿,我需要上次发布的消息的补偿。
我需要补偿来进行崩溃恢复,而不需要人工干预。
我需要使用librdkafka
进行偏移,当我的程序重新启动时,根据偏移,我将对程序进行一些修改,因此我只需要在需要时通过API来获取它。
我认为我不能依靠回调,
考虑我推送了消息,收到了回调并且程序崩溃了。
或
我推送了消息,我将要轮询,并且程序崩溃了。
我正在使用C语言librdkafka
库。
答案 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
对于发送的每条消息,您都会看到传递报告包含产生的消息的偏移量。
基本上这个例子: