Ожидание завершения операции отзыва в процессе восстановления баланса Кафки? - PullRequest
1 голос
/ 12 марта 2019

Например, если у меня есть длительный процесс в одном из моих KafkaConsumer.(Допустим, для завершения требуется 1 час.) Если инициируется перебалансировка, вызывает ли операция отзыва для этого потребителя ожидание, пока это сообщение потребителя (процесс) не начнет обрабатываться перед перебалансировкой?

Так можно ли простоиз-за этого перебалансировка занимает слишком много времени?

Или операция отзыва выполняется немедленно?

1 Ответ

1 голос
/ 13 марта 2019

Для новых потребителей Java по умолчанию время перебалансировки составляет 5 минут, и до того, как брокер перебалансировки удалит этого потребителя из группы и вызовет перебалансировку, он просто удалит этот поток, но не прекратит работу (поэтому потребитель будет обрабатывать все записи, которые он началось и после финиша умрет)

Если брокер не получил пульса до истечения этого тайм-аута сеанса, то брокер удалит этого потребителя из группы и инициирует перебалансировку.

Если poll () не вызывается до истечения этого времени ожидания, то считается, что потребитель потерпел неудачу, и группа выполнит балансировку, чтобы переназначить разделы другому участнику.

Новый Java Consumer теперь поддерживает биение сердца из фонового потока. Существует новая конфигурация max.poll.interval.ms, которая контролирует максимальное время между вызовами опроса до того, как потребитель проактивно покинет группу (5 минут по умолчанию). Значение конфигурации request.timeout.ms всегда должно быть больше, чем max.poll.interval.ms, потому что это максимальное время, которое запрос JoinGroup может блокировать на сервере, пока потребитель восстанавливает баланс, поэтому мы изменили его значение по умолчанию чуть выше 5 минут.

...