同福

Error: NOT_LEADER_OR_FOLLOWER (org.apache.kafka.clients.producer.internals.Sender)

我们在对某个主题Topic进行生产者Producer或者消费者Consumer操作的时候,目标服务器必须是这个主题Topic分区Partition的领导者leader或者跟随者follower,否则目标服务器就会抛出NOT_LEADER_OR_FOLLOWER异常

导致主题Topic分区Partition的领导者leader或者跟随者follower发生变化的情况很多,例如:Kafka集群添加/删除服务器,Kafka集群服务器出现故障,Kafka集群网络出现故障等等。

为了避免这个问题,可以在操作主题Topic之前先查一下主题的leader是哪个节点服务器。

./bin/kafka-topics.sh --describe \
--topic quickstart-events \
--bootstrap-server localhost:9092

执行命令后会有类似如下信息打印出来。

Topic: quickstart-events        TopicId: u9P3sZhEROeSJtAocFYC0g PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824
Topic: quickstart-events        Partition: 0    Leader: 1       Replicas: 1     Isr: 1

其中Partition就是主题quickstart-events的分区,这里是0分区。Leader就是主题的领导者leader,这里是1号服务器。Replicas就是主题的跟随者follower,这里是1号服务器。