Во-первых, вы правы, каждой записи присваивается смещение в разделе.
Настройки max.poll.records
( документы ) позволяют определить максимальное количество записей, которое потребитель будет возвращать каждый раз, когда ваше приложение вызывает poll()
. Это максимум, он может вернуть это или меньше.
Обратите внимание, что это не напрямую контролирует объем данных, получаемых из кластера, поскольку эти параметры применяются на стороне клиента. Это просто для контроля количества возвращаемых записей на poll()
.
В фоновом режиме потребитель мог получить больше данных, чтобы быть готовым к возврату в следующий раз, когда приложение вызовет poll()
. Сколько данных получает потребитель, определяется fetch.min.bytes
, max.partition.fetch.bytes
и fetch.max.bytes
.
Эти настройки позволяют вам контролировать темп вашего приложения, поскольку вам нужно будет обрабатывать max.poll.records
сразу, даже если доступно большое количество записей.