Golang连接kafka报错: Errorkafka: client has run out of available brokers to talk to

该文章已生成可运行项目,

用到的go包: “github.com/Shopify/sarama”
详细的报错内容如下:

2022/10/28 15:39:25 Error creating consumer group client: kafka: client has run out of available brokers to talk to: 3 errors occurred:
        * EOF
        * EOF
        * EOF
panic: Error creating consumer group client: kafka: client has run out of available brokers to talk to: 3 errors occurred:
        * EOF
        * EOF
        * EOF

功能模块是我写好的,之前测试一切正常。只是重新部署了kafka,重新启动就导致这样的问题。
解决思路:

  1. 首先想到是不是kafka部署的问题
    用python客户端测试后,发现创建topic,生产数据,消费数据都是没有问题的。
  2. 想到是不是sarama的问题
    之前的功能都是没有问题,更改的只是将kafka从单点更改到集群。重新下载了部署包,重新进行了集群的构建。
本文章已经生成可运行项目
### 问题分析 在使用 Golang 的 `sarama` 包连接 Kafka 时,出现错误 `kafka: client has run out of available brokers to talk to: EOF`[^1]。此错误通常表示客户端无法与 Kafka 集群中的任何代理(broker)建立连接。以下是一些可能的原因及解决方案。 --- ### 可能原因及解决方法 #### 1. **Kafka 和 Zookeeper 服务未启动** 如果 Kafka 或 Zookeeper 服务未正确启动,客户端将无法连接到集群。 - 确保 Kafka 和 Zookeeper 已通过管理员权限启动,并且没有异常日志输出[^3]。 - 启动命令如下: ```bash # 启动 Zookeeper F:\kafka\kafka_2.12-2.8.0\bin\windows> zookeeper-server-start.bat F:\kafka\kafka_2.12-2.8.0\config\zookeeper.properties # 启动 Kafka F:\kafka\kafka_2.12-2.8.0\bin\windows> kafka-server-start.bat F:\kafka\kafka_2.12-2.8.0\config\server.properties ``` #### 2. **网络连接问题** 客户端无法访问 Kafka 代理的主机和端口。 - 检查 Kafka 是否监听正确的地址和端口。默认情况下,Kafka 监听 `localhost:9092`。 - 使用 `telnet` 测试连接: ```bash telnet 127.0.0.1 9092 ``` 如果连接失败,可能是 Kafka 未正确启动或防火墙阻止了连接[^4]。 #### 3. **配置文件设置错误** Kafka 的 `server.properties` 文件中可能存在不正确的配置。 - 确保 `advertised.listeners` 设置为客户端可以访问的地址。例如: ```properties advertised.listeners=PLAINTEXT://<your-host>:9092 ``` - 如果在本地开发环境中运行,可以设置为: ```properties advertised.listeners=PLAINTEXT://localhost:9092 ``` #### 4. **客户端配置问题** Sarama 客户端的配置可能不正确。 - 确保 `Config.Net.Addresses` 包含正确的 Kafka 代理地址。例如: ```go config := sarama.NewConfig() brokerList := []string{"localhost:9092"} producer, err := sarama.NewSyncProducer(brokerList, config) if err != nil { log.Fatalf("Failed to start Sarama producer: %v", err) } defer func() { if err := producer.Close(); err != nil { log.Fatalf("Error closing producer: %v", err) } }() ``` #### 5. **权限问题** 在 Windows 环境下,如果 Kafka 或 Zookeeper 未以管理员权限启动,可能导致连接失败。 - 确保以管理员权限启动 Kafka 和 Zookeeper[^4]。 #### 6. **Kafka 版本兼容性** Sarama 的版本可能与 Kafka 版本不兼容。 - 确保使用的 Sarama 版本支持当前的 Kafka 版本。例如,Sarama v1.28 支持 Kafka 2.8.x[^2]。 --- ### 示例代码 以下是一个完整的 Sarama 生产者示例: ```go package main import ( "log" "os" "github.com/Shopify/sarama" ) func main() { config := sarama.NewConfig() config.Producer.RequiredAcks = sarama.WaitForAll config.Producer.Retry.Max = 5 config.Producer.Return.Successes = true brokerList := []string{"localhost:9092"} producer, err := sarama.NewSyncProducer(brokerList, config) if err != nil { log.Fatalf("Failed to start Sarama producer: %v", err) } defer func() { if err := producer.Close(); err != nil { log.Fatalf("Error closing producer: %v", err) } }() msg := &sarama.ProducerMessage{ Topic: "test-topic", Value: sarama.StringEncoder("Hello, Kafka!"), } partition, offset, err := producer.SendMessage(msg) if err != nil { log.Fatalf("Failed to send message: %v", err) } log.Printf("Message sent to partition %d at offset %d\n", partition, offset) } ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值