返回

用这些方法,解决Kafka生产者发送消息错误:Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

后端

Kafka 生产者错误:“Bootstrap 代理已断开连接”:深入剖析

在使用 Kafka 生产者发送消息时,您可能会遇到令人头疼的“Bootstrap 代理 localhost:9092 (id: -1 架构: null) 已断开连接”错误。这表示生产者无法建立与 Kafka 代理的连接。在这篇全面的指南中,我们将探讨导致此错误的原因并提供分步解决方法,适用于 Linux、Mac 和 Windows 系统。

问题根源

该错误的根源可能是多种因素造成的:

  • Kafka 代理未运行: 确保 Kafka 代理已启动并正在运行。
  • 防火墙阻止: 防火墙可能阻止生产者访问 Kafka 代理。
  • 生产者配置错误: 生产者配置中的错误设置,例如错误的引导服务器或生产者 ID,可能会导致连接问题。

解决步骤

Linux/Mac

  1. 检查代理状态:
    kafka-topics --list
    
    如果未列出任何主题,则代理未运行。
  2. 检查防火墙设置:
    sudo ufw status
    
    确保 9092 端口已打开。
  3. 验证生产者配置:
    bootstrap.servers=localhost:9092
    client.id=my-producer
    
  4. 重启生产者:
    kafka-producer-perf-test --topic test --num-records 1000 --record-size 100
    

Windows

  1. 检查代理状态:
    sc query Kafka
    
    状态应为“正在运行”。
  2. 检查防火墙设置:
    netsh advfirewall firewall show rule name=all
    
    确保 9092 端口已允许。
  3. 验证生产者配置:
    bootstrap.servers=localhost:9092
    client.id=my-producer
    
  4. 重启生产者:
    kafka-producer-perf-test --topic test --num-records 1000 --record-size 100
    

其他解决方法

  • 检查网络连接: 确保生产者机器与运行 Kafka 代理的机器之间存在稳定的网络连接。
  • 更新 Kafka 版本: 过时的 Kafka 版本可能导致兼容性问题。考虑更新到最新版本。
  • 禁用 SASL 认证: 如果启用了 SASL 认证,请尝试暂时禁用它以排除认证问题。

总结

通过遵循本文概述的步骤,您应该能够解决“Bootstrap 代理已断开连接”错误并恢复使用 Kafka 生产者。如果您仍然遇到问题,请随时寻求专家帮助或在相关论坛上发布您的问题。

常见问题解答

  1. 如何确定 Kafka 代理是否正在运行?

    • 对于 Linux/Mac:使用 kafka-topics --list 命令。
    • 对于 Windows:使用 sc query Kafka 命令。
  2. 为什么我需要打开防火墙上的 9092 端口?

    • 因为这是 Kafka 代理使用的默认端口,生产者需要能够通过该端口进行连接。
  3. 如何设置生产者 ID?

    • 使用 client.id 配置属性为生产者分配一个唯一 ID。
  4. 禁用 SASL 认证有什么影响?

    • 禁用 SASL 认证可以简化故障排除过程,但它会降低安全性。
  5. 我应该使用哪个 Kafka 版本?

    • 始终建议使用最新版本的 Kafka,因为它提供了最佳的稳定性和功能。