You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用kafka-node向Kafka Producer发送消息报LeaderNotAvailable错误如何解决

Kafka LeaderNotAvailable错误修复方案
  • 第一步:确认目标topic已正常创建

Kafka默认若关闭自动创建topic开关,向不存在的topic发送消息会直接触发LeaderNotAvailable错误。
先执行命令手动创建topic:

bin/kafka-topics.sh --create --topic catalog --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

再执行命令验证topic状态:

bin/kafka-topics.sh --describe --topic catalog --bootstrap-server localhost:9092

若输出中Leader字段值不为-1,说明topic选举正常。

  • 第二步:修正Kafka服务端配置

虽然你已经修改过advertised.listeners,请确认server.properties中以下配置完全匹配:

# 内部监听地址,0.0.0.0允许所有主机访问
listeners=PLAINTEXT://0.0.0.0:9092
# 对外暴露的访问地址,和你代码里填的kafka_server完全一致
advertised.listeners=PLAINTEXT://localhost:9092
inter.broker.listener.name=PLAINTEXT
# 若没有自定义zookeeper端口,保持默认即可
zookeeper.connect=localhost:2181

修改配置后必须按顺序重启服务:先停止Kafka,再停止Zookeeper,然后先启动Zookeeper,等待10秒完全启动后再启动Kafka,Kafka启动完成后等待30秒再运行NodeJS代码。

  • 第三步:调整NodeJS客户端配置

修改kafka-node初始化参数,添加可靠性配置:

// 修改KafkaClient初始化参数
const client = new kafka.KafkaClient({
  kafkaHost: config.kafka_server,
  requestTimeout: 5000,
  autoConnect: true
});
// 修改Producer初始化参数
const producer = new Producer(client, {
  requireAcks: 1,
  ackTimeoutMs: 1000
});
  • 第四步:验证Kafka本身可用性

若以上步骤都无效,先用Kafka自带脚本验证服务本身是否正常:

  1. 启动控制台生产者,输入任意消息回车发送:
bin/kafka-console-producer.sh --topic catalog --bootstrap-server localhost:9092
  1. 另开终端启动控制台消费者,看是否能收到刚才发送的消息:
bin/kafka-console-consumer.sh --topic catalog --from-beginning --bootstrap-server localhost:9092

如果脚本收发消息正常,说明是客户端代码问题;如果脚本也报错,说明Kafka服务部署有问题,可删除Kafka日志目录和Zookeeper数据目录后重新启动服务初始化。


内容的提问来源于stack exchange,提问作者Shruti Bhambhani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:36:01