Получает ли потребитель Kafka список смещений первым, прежде чем получать байты / данные?

#apache-kafka

#apache-kafka

Вопрос:

Я совсем новичок в Apache Kafka, и в настоящее время я читаю Learning Apache Kafka, 2ed, (2015). Глава 3, параграф Основы проектирования Kafka, гласит следующее:

Потребители всегда последовательно используют сообщения из определенного раздела, а также подтверждают смещение сообщения. Это подтверждение подразумевает, что потребитель использовал все предыдущие сообщения. Потребители выдают асинхронный запрос на извлечение, содержащий смещение сообщения, которое будет передано брокеру, и получают буфер байтов.

Меня немного смущает слово «подтвердить». Правильно ли я понимаю, что Kafka сначала отправляет смещение, а затем потребитель использует список смещений для запроса запроса данных, которые он еще не использовал?

Заранее спасибо,

Ник

Ответ №1:

При запуске KafkaConsumer выдает запрос на поиск смещения брокерам для конкретной группы потребителей, которая была настроена для этого потребителя. Если возвращаются допустимые смещения, они используются. В противном случае потребитель использует начальное смещение в соответствии с auto.offset.reset параметром.

После этого смещения сохраняются в основном в памяти внутри потребителя. Каждый poll() отправляет текущее смещение брокеру, и при ответе брокера потребитель обновляет смещения в памяти.

Кроме того, смещение в памяти время от времени фиксируется / подтверждается брокеру. Это может произойти автоматически, poll() если включена автоматическая фиксация, или commit() должно быть вызвано явно для отправки смещений брокеру для их надежного хранения.