返回
用这些方法,解决Kafka生产者发送消息错误:Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
后端
2023-03-04 20:44:28
Kafka 生产者错误:“Bootstrap 代理已断开连接”:深入剖析
在使用 Kafka 生产者发送消息时,您可能会遇到令人头疼的“Bootstrap 代理 localhost:9092 (id: -1 架构: null) 已断开连接”错误。这表示生产者无法建立与 Kafka 代理的连接。在这篇全面的指南中,我们将探讨导致此错误的原因并提供分步解决方法,适用于 Linux、Mac 和 Windows 系统。
问题根源
该错误的根源可能是多种因素造成的:
- Kafka 代理未运行: 确保 Kafka 代理已启动并正在运行。
- 防火墙阻止: 防火墙可能阻止生产者访问 Kafka 代理。
- 生产者配置错误: 生产者配置中的错误设置,例如错误的引导服务器或生产者 ID,可能会导致连接问题。
解决步骤
Linux/Mac
- 检查代理状态:
如果未列出任何主题,则代理未运行。kafka-topics --list
- 检查防火墙设置:
确保 9092 端口已打开。sudo ufw status
- 验证生产者配置:
bootstrap.servers=localhost:9092 client.id=my-producer
- 重启生产者:
kafka-producer-perf-test --topic test --num-records 1000 --record-size 100
Windows
- 检查代理状态:
状态应为“正在运行”。sc query Kafka
- 检查防火墙设置:
确保 9092 端口已允许。netsh advfirewall firewall show rule name=all
- 验证生产者配置:
bootstrap.servers=localhost:9092 client.id=my-producer
- 重启生产者:
kafka-producer-perf-test --topic test --num-records 1000 --record-size 100
其他解决方法
- 检查网络连接: 确保生产者机器与运行 Kafka 代理的机器之间存在稳定的网络连接。
- 更新 Kafka 版本: 过时的 Kafka 版本可能导致兼容性问题。考虑更新到最新版本。
- 禁用 SASL 认证: 如果启用了 SASL 认证,请尝试暂时禁用它以排除认证问题。
总结
通过遵循本文概述的步骤,您应该能够解决“Bootstrap 代理已断开连接”错误并恢复使用 Kafka 生产者。如果您仍然遇到问题,请随时寻求专家帮助或在相关论坛上发布您的问题。
常见问题解答
-
如何确定 Kafka 代理是否正在运行?
- 对于 Linux/Mac:使用
kafka-topics --list
命令。 - 对于 Windows:使用
sc query Kafka
命令。
- 对于 Linux/Mac:使用
-
为什么我需要打开防火墙上的 9092 端口?
- 因为这是 Kafka 代理使用的默认端口,生产者需要能够通过该端口进行连接。
-
如何设置生产者 ID?
- 使用
client.id
配置属性为生产者分配一个唯一 ID。
- 使用
-
禁用 SASL 认证有什么影响?
- 禁用 SASL 认证可以简化故障排除过程,但它会降低安全性。
-
我应该使用哪个 Kafka 版本?
- 始终建议使用最新版本的 Kafka,因为它提供了最佳的稳定性和功能。