更新:原来我在 Docker 中的端口有问题。不知道为什么解决了这种现象。
我相信我遇到了一个奇怪的错误。我正在使用Sarama库,并且能够成功创建消费者。
func main() {
config = sarama.NewConfig()
config.ClientID = "go-kafka-consumer"
config.Consumer.Return.Errors = true
// Create new consumer
master, err := sarama.NewConsumer("localhost:9092", config)
if err != nil {
panic(err)
}
defer func() {
if err := master.Close(); err != nil {
panic(err)
}
}()
partitionConsumer, err := master.ConsumePartition("myTopic",0,
sarama.OffsetOldest)
if err != nil {
panic(err)
}
}
一旦我将这段代码分解并移出主程序,我就会遇到错误:
kafka:客户端已经用完了可以与之交谈的代理(您的集群是否可达?)
我已将代码拆分如下:以前的 main() 方法现在已转换为使用名为 NewConsumer() 的方法的消费者包,并且我的新 main() 调用 NewConsumer() 如下所示:
c := consumer.NewConsumer()
恐慌声明被触发sarama.NewConsumer
并打印出来kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
为什么以这种方式分解我的代码会触发 Sarama 无法成为消费者?Sarama 是否需要直接从 main 运行?