gpt4 book ai didi

go - 卡夫卡 : client has run out of available brokers

转载 作者:IT王子 更新时间:2023-10-29 02:00:45 28 4
gpt4 key购买 nike

更新:原来我在 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: client has run out of available brokers to talk to (Is your cluster reachable?)

我将我的代码拆分如下​​:我现在将之前的 main() 方法转换为一个消费者包,其中包含一个名为 NewConsumer() 的方法,我的新 main() 调用 NewConsumer() 如下所示:

c := consumer.NewConsumer()

panic 语句在 sarama.NewConsumer 行中被触发并打印出 kafka: client has run out of available brokers to talk to (Is your cluster reachable?)

为什么以这种方式分解我的代码会导致 Sarama 无法创建消费者? Sarama 是否需要直接从 main 运行?

最佳答案

认为您以这种方式创建了 2 个或更多消费者,这些消费者被分组到一个组中(可能是 go-kafka-consumer)。您的 Broker 有一个包含 1 个分区的主题,因此分配了一个组,另一个产生此错误消息。如果您将该主题的分区提高到 2,错误就会消失。但我认为你的问题是你以某种方式实例化了比以前更多的消费者。

来自 Kafka in a Nutshell :

Consumers can also be organized into consumer groups for a given topic — each consumer within the group reads from a unique partition and the group as a whole consumes all messages from the entire topic. If you have more consumers than partitions then some consumers will be idle because they have no partitions to read from. If you have more partitions than consumers then consumers will receive messages from multiple partitions. If you have equal numbers of consumers and partitions, each consumer reads messages in order from exactly one partition.

它们不会准确地产生错误,所以这将是 Sarama 的问题。

关于go - 卡夫卡 : client has run out of available brokers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55867965/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com