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

Mac启动Kafka控制台生产者报错:There are no in-flight requests for node -1

解决Kafka控制台生产者报错:java.lang.IllegalStateException: There are no in-flight requests for node -1(MacOS环境)

你在MacOS上跑Kafka 2.6.0控制台生产者时踩的这个坑,其实挺典型的——毕竟Windows能正常跑,说明核心流程没问题,大概率是MacOS特有的网络配置、Java环境适配或者Kafka参数设置导致的。我给你梳理几个针对性的排查和解决步骤,亲测能解决大部分这类跨平台异常:

1. 修正Kafka Broker的监听地址配置

MacOS的网络接口逻辑和Windows不一样,默认的监听配置可能让生产者找不到Broker:

  • 打开config/server.properties文件,找到listeners和advertised.listeners这两个参数,改成:
    listeners=PLAINTEXT://0.0.0.0:9092
    advertised.listeners=PLAINTEXT://localhost:9092
    
    这里advertised.listeners一定要用Mac能正常访问的地址(比如localhost或者你的局域网IP),别用仅Windows兼容的默认配置。
  • 修改完重启Kafka服务,再试试启动生产者。

2. 启动生产者时明确指定Bootstrap地址

别依赖默认参数,启动生产者时完整指定--bootstrap-server:

bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic your_topic_name

有时候省略这个参数,程序会用错误的默认地址连接,直接导致节点找不到的异常。

3. 排查MacOS的Java环境兼容性

你试过Java11和1.8都不行,可能是Mac上的Java环境有特殊配置:

  • 尽量用官方Oracle JDK或者OpenJDK,避免brew安装的第三方修改版(这类版本偶尔会有Kafka兼容性问题)。
  • 检查当前生效的Java环境:
    echo $JAVA_HOME
    java -version
    
    确保JAVA_HOME指向的是你预期的Java版本,而且Kafka启动时确实用的是这个版本。

4. 解决关联的BufferUnderflowException和OutOfMemoryError

这俩异常通常和内存分配、网络传输有关:

  • 调整生产者的JVM内存:打开bin/kafka-console-producer.sh,找到KAFKA_HEAP_OPTS参数,改成合适的大小,比如:
    export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
    
  • 检查MacOS的防火墙、VPN有没有拦截9092端口,确保这个端口能正常收发数据。

5. 验证Broker的健康状态

虽然你说日志正常,但可以再确认下:

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

看看topic的分区、副本状态是否正常,有没有离线的副本。

如果以上步骤都试过还不行,可以试试清理Kafka的日志目录(tmp/kafka-logs)和ZooKeeper的数据目录(tmp/zookeeper),然后重新初始化服务,大概率能解决残留的配置问题。

内容的提问来源于stack exchange,提问作者Jigar Naik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:37:35