#apache-kafka
#apache-kafka
Вопрос:
Я совсем новичок в Apache Kafka, и в настоящее время я читаю Learning Apache Kafka, 2ed, (2015). Глава 3, параграф Основы проектирования Kafka, гласит следующее:
Потребители всегда последовательно используют сообщения из определенного раздела, а также подтверждают смещение сообщения. Это подтверждение подразумевает, что потребитель использовал все предыдущие сообщения. Потребители выдают асинхронный запрос на извлечение, содержащий смещение сообщения, которое будет передано брокеру, и получают буфер байтов.
Меня немного смущает слово «подтвердить». Правильно ли я понимаю, что Kafka сначала отправляет смещение, а затем потребитель использует список смещений для запроса запроса данных, которые он еще не использовал?
Заранее спасибо,
Ник
Ответ №1:
При запуске KafkaConsumer
выдает запрос на поиск смещения брокерам для конкретной группы потребителей, которая была настроена для этого потребителя. Если возвращаются допустимые смещения, они используются. В противном случае потребитель использует начальное смещение в соответствии с auto.offset.reset
параметром.
После этого смещения сохраняются в основном в памяти внутри потребителя. Каждый poll()
отправляет текущее смещение брокеру, и при ответе брокера потребитель обновляет смещения в памяти.
Кроме того, смещение в памяти время от времени фиксируется / подтверждается брокеру. Это может произойти автоматически, poll()
если включена автоматическая фиксация, или commit()
должно быть вызвано явно для отправки смещений брокеру для их надежного хранения.