Если у меня есть пустая тема с одним разделом (и одной репликой), и я запрашиваю низкие / высокие водяные знаки, возвращается значение 0/0. Если у меня есть одно сообщение в разделе, оно возвращается на 0/1. Но чтобы получить последнее (и единственное сообщение), я должен начать чтение с 0. В частности, моему приложению необходимо при запуске прочитать последнее (последнее написанное) сообщение в разделе. Итак, я использую этот код:
consumer.Assign(new[] { new TopicPartitionOffset(topicPartition, new Offset(last - 1)) });
когда последнее смещение> 0. (последнее - возвращаемое значение для верхнего уровня воды)
Кажется, это работает, но, похоже, это не соответствует документам, которые я прочитал, которые указывают, что высокий водяной знак - это смещение последнего реплицированного сообщения. Судя по моим экспериментам, он на один выше. Я что-то упустил?
Я думаю, вы подтверждаете мое понимание тем, что верхний водяной знак на единицу больше, чем смещение последнего сообщения. Я не получил этого понимания из документации. Я думал, это подразумевает, что высокий водяной знак == смещение последнего сообщения, что, похоже, не так.
Это смещение, где будет написано следующее сообщение
Я могу подтвердить то, что сказал @OneCricketeer.

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