我们在对某个主题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号服务器。