Представьте, что мы отправили запрос на фиксацию смещения 2000. Существует временная проблема связи, поэтому брокер никогда не получает запрос и, следовательно, никогда не отвечает. В то же время,
мы обработали другую партию и успешно зафиксировали смещение 3000. Теперь повторяется попытка ранее завершившейся неудачной фиксации пакетов, и, за исключением, оно отображает то же сообщение. В случае перебалансировки это вызовет больше дубликатов
A. Время запаздывания увеличивается
Поскольку перебалансировка происходит чаще из-за того, что потребитель не потребляет записи постоянно, а продюсер постоянно производит записи.
B. тайм-аут запроса commitAsync
Только активные члены группы могут фиксировать смещения. Если потребитель был исключен из группы при попытке зафиксировать смещение, он выбросит CommitFailedException
c.Rebalance
Когда начинается перебалансировка, потребитель должен завершить любую обработку, которую он выполняет в данный момент, зафиксировать смещения и снова присоединиться к группе до истечения времени ожидания сеанса.
Мы должны повлиять на consumerRebalanceListener и использовать onPartitionsRevoked () для фиксации смещений перед тем, как потерять владение разделом для фиксации текущего смещения.
max.poll.interval.ms и max.poll.records до достаточно низкого значения, сохраняя при этом значение session.timeout.ms, чтобы время обнаружения сбоев не было нужно пожертвовать.
CommitFailedException, выброшенное из commitSync (). Это гарантирует, что только активные члены группы могут фиксировать смещения. Если потребитель был исключен из группы, то его разделы будут назначены другому участнику, который будет фиксировать свои собственные смещения.