Действительно ли верхний водяной знак раздела на единицу больше смещения последнего сообщения в разделе?

Если у меня есть пустая тема с одним разделом (и одной репликой), и я запрашиваю низкие / высокие водяные знаки, возвращается значение 0/0. Если у меня есть одно сообщение в разделе, оно возвращается на 0/1. Но чтобы получить последнее (и единственное сообщение), я должен начать чтение с 0. В частности, моему приложению необходимо при запуске прочитать последнее (последнее написанное) сообщение в разделе. Итак, я использую этот код:

 consumer.Assign(new[] { new TopicPartitionOffset(topicPartition, new Offset(last - 1)) });

когда последнее смещение> 0. (последнее - возвращаемое значение для верхнего уровня воды)

Кажется, это работает, но, похоже, это не соответствует документам, которые я прочитал, которые указывают, что высокий водяной знак - это смещение последнего реплицированного сообщения. Судя по моим экспериментам, он на один выше. Я что-то упустил?

Если в теме есть одно сообщение, смещение для этого сообщения находится со смещением 0 ... Но есть одно сообщение, поэтому водяной знак равен 1 ... Хотя я не уверен, что понимаю вопрос

OneCricketeer 30.10.2018 23:12

Я думаю, вы подтверждаете мое понимание тем, что верхний водяной знак на единицу больше, чем смещение последнего сообщения. Я не получил этого понимания из документации. Я думал, это подразумевает, что высокий водяной знак == смещение последнего сообщения, что, похоже, не так.

Howard Pinsley 31.10.2018 15:36

Это смещение, где будет написано следующее сообщение

OneCricketeer 31.10.2018 15:45

Я могу подтвердить то, что сказал @OneCricketeer.

kentor 24.05.2020 19:15
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
1
4
557
0

Другие вопросы по теме