Получить номер смещения последнего написанного сообщения из kafka - PullRequest
0 голосов
/ 05 октября 2018

Я создаю сообщения в теме с именем default.

Мой раздел-производитель RD_KAFKA_PARTITION_UA, Когда я использую неназначенный раздел, как я могу получить смещение последнего отправленного сообщенияна default тему.

Мне не нужно смещение потребителя, мне нужно смещение последнего опубликованного сообщения.

Мне нужно смещение для восстановления после сбоя, вмешательство человека не предусмотрено.

Мне нужно смещение, используя librdkafka, когда моя программа снова запустится, основываясь на смещении, я внесу некоторые изменения в свою программу, поэтому мне нужно получить ее только через API и при необходимости.

Iне думаю, что я могу положиться на обратный вызов,

посмотрим, что я нажал на мое сообщение, я получил обратный вызов, и моя программа упала.

или

Я отправил свое сообщение, я былсобирается опросить, и моя программа потерпела крах.

Я использую библиотеку языка C librdkafka.

1 Ответ

0 голосов
/ 05 октября 2018

Это легко сделать, используя отчет о доставке производителя.

Один из примеров 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

Вы видите, что для каждого отправленного сообщения отчет о доставке содержит смещение созданного сообщения.

В основном этот пример:

  • sets produce.offset.report=true [1]
  • регистрирует отчет о доставке [2]
  • в отчете о доставке, доступ к полю смещения [3]
...