Получение NotLeaderForPartitionException в течение очень долгого времени - PullRequest
1 голос
/ 28 апреля 2020

У меня есть 3-узловый кластер kafka, внезапно один из узлов в кластере вышел из строя, и я начал видеть исключение NotLeaderForPartitionException в журналах приложений при отправке сообщения в одну из тем, однако для некоторых тем я могу публиковать и принимать сообщения.

Я мог видеть, что эта проблема сохраняется до тех пор, пока все серверы kafka не будут перезапущены, после перезапуска все в порядке.

Теперь мой вопрос: почему бы и нет новый лидер не избран по этим темам, но продолжает выбрасывать одно и то же исключение NotLeaderForPartitionException, и как добиться избрания нового лидера по этим темам?

Трассировка исключений:

2020-04-11 22:05:21,747 ERROR [pool-15-thread-297] [KafkaMessageProducer:92] Message send failed:
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.
    at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.valueOrError(FutureRecordMetadata.java:94)
    at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:64)
    at org.apache.kafka.clients.producer.internals.FutureRecordMetadata.get(FutureRecordMetadata.java:29)

1 Ответ

1 голос
/ 28 апреля 2020

Оба запроса Produce и Fetch отправляются реплике лидера раздела. NotLeaderForPartitionException исключение выдается при отправке запроса на раздел, который не является репликой лидера раздела в настоящее время.

Клиент поддерживает информацию о лидере каждого раздела в виде кэша. Полный процесс управления кешем показан ниже.

enter image description here

Клиент должен обновить sh эту информацию, установив metadata.max.age.ms в конфигурации производителя , Значение этого тега по умолчанию: 300000 ms

. Вы можете go с помощью следующей Apache документации Kafka.

https://kafka.apache.org/documentation/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...