Кафка: Этот сервер не является лидером для этого раздела темы - PullRequest
0 голосов
/ 25 октября 2018

Возможный дубликат Kafka - Этот сервер не является лидером для этого раздела темы , но нет ни принятого ответа, ни четкого решения.

У меня естьпростая Java-программа для создания сообщения для Кафки:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 1);
props.put("batch.size", 16384);
props.put("linger.ms", 100);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "com.company.project.KafkaValueSerializer");
MyMessage message = new MyMessage();
Producer<String, MyMessage> producer = new KafkaProducer<>(props);
Future<RecordMetadata> future =
    producer.send(new ProducerRecord<String, MyMessage>("My_Topic", "", message));

Я получаю следующее исключение:

Exception in thread "main" 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)
    at 
Caused by: org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.

Когда я пытаюсь использовать kafka-console-producer, я получаю следующую ошибку:

D:\kafka_2.11-0.10.2.0\bin\windows>kafka-console-producer.bat --broker-list localhost:9092  --topic My_Topic
hello
[2018-10-25 17:05:27,225] WARN Got error produce response with correlation id 3 on topic-partition My_Topic-0, retrying (2 attempts left). Error: NOT_LEADER_FOR_PARTITION (org.apache.kafka.clients.producer.internals.Sender)
[2018-10-25 17:05:27,335] WARN Got error produce response with correlation id 5 on topic-partition My_Topic-0, retrying (1 attempts left). Error: NOT_LEADER_FOR_PARTITION (org.apache.kafka.clients.producer.internals.Sender)
[2018-10-25 17:05:27,444] WARN Got error produce response with correlation id 7 on topic-partition My_Topic-0, retrying (0 attempts left). Error: NOT_LEADER_FOR_PARTITION (org.apache.kafka.clients.producer.internals.Sender)
[2018-10-25 17:05:27,544] ERROR Error when sending message to topic My_Topic with key: null, value: 5 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition.

Когда я описываю свою тему, у меня есть следующая информация:

Topic:My_Topic        PartitionCount:1        ReplicationFactor:1     Configs:
        Topic: My_Topic       Partition: 0    Leader: 0 Replicas: 0     Isr: 0

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

Какое исправление я должен сделать в My_Topic или конфигурации производителя, чтобы я мог успешно публиковать сообщения в этой теме?

1 Ответ

0 голосов
/ 11 декабря 2018

Если бы "консольный клиент работал, но программа Java не работала" , тогда могло бы помочь решение "изменение предела повторных попыток".

Поскольку оба JavaПрограмма и встроенный производитель командной строки не могут подключиться к Kafka, я подозреваю, что проблема может быть связана с устаревшей конфигурацией.

(Пример: тема удалена и создана заново с тем же именем, нос другим количеством разделов).

Удаление старых файлов журнала zookeeper и Kafka и повторное создание темы или создание темы с другим именем решит проблему.

...