繁体   English   中英

无法使用Sarama Golang软件包创建Kafka生产者客户端-“客户端/元数据在获取元数据时从代理处出错:EOF”

[英]Unable to create Kafka producer client with Sarama Golang package-“client/metadata got error from broker while fetching metadata: EOF”

版本:GoLang 1.10.2 Kafka 4.4.1 Docker 18.03.1

我正在尝试使用Shopify的Sarama软件包来测试我的Kafka实例。 我使用Docker compose来站起Kafka / Zookeeper,并且一切都已成功运行。

当我尝试使用Sarama创建Producer客户端时,会引发错误。

当我运行以下

    package main

import (
"fmt"
"log"
"os"
"os/signal"
"time"

"strconv"

"github.com/Shopify/sarama"

func main() {


// Setup configuration
config := sarama.NewConfig()
config.Producer.Return.Successes = true
config.Producer.Partitioner = sarama.NewRandomPartitioner
config.Producer.RequiredAcks = sarama.WaitForAll
brokers := []string{"localhost:29092"}
producer, err := sarama.NewAsyncProducer(brokers, config)
if err != nil {
    // Should not reach here
    panic(err)
}

defer func() {
    if err := producer.Close(); err != nil {
        // Should not reach here
        panic(err)
    }
}()

我明白了

[sarama] 2018/06/12 17:22:05初始化新客户端

[sarama] 2018/06/12 17:22:05客户端/元数据从代理localhost:29092获取所有主题的元数据

[sarama] 2018/06/12 17:22:05已连接到本地主机上的代理:29092(未注册)

[sarama] 2018/06/12 17:22:05客户端/元数据在获取元数据时从代理获取错误:EOF

[sarama] 2018/06/12 17:22:05与经纪人本地主机的关闭连接:29092

{sarama] 2018/06/12 17:22:05客户端/元数据没有可用的代理将元数据请求发送到

[sarama] 2018/06/12 17:22:06关闭客户端恐慌:kafka:客户端用尽了可用的经纪人与之交谈(您的集群是否可以访问?)

goroutine 1 [运行中]:main.main()/Users/benwornom/go/src/github.com/acstech/doppler-events/testprod/main.go:29 + 0x3ec退出状态2

萨拉玛(Sarama)确实连续尝试创建生产者客户几次,但每次都失败。

我对Sarama的“ NewAsyncProducer”方法的理解是,它调用了“ NewClient”,无论您是要创建生产者还是使用消费者,都将调用该方法。 NewClient尝试从Kafka代理收集元数据,在我的情况下这是失败的。 我知道它正在连接到Kafka经纪人,但是一旦连接成功,它似乎就崩溃了。 任何意见将是有益的。 我的网络连接很牢固,我想不出任何干扰服务器的信息。 据我所知,现有主题只有一个代理和一个分区。 我认为我不必手动将主题分配给经纪人。 如果我的客户与经纪人建立联系,为什么我不能为生产者建立持久的联系?

这是在死之前从kafka日志文件获得的。

__consumer_offsets-5-> Vector(1),connect-offsets-23-> Vector(1),__consumer_offsets-43-> Vector(1),__consumer_offsets-32-> Vector(1),__consumer_offsets-21-> Vector(1 ),__consumer_offsets-10-> Vector(1),connect-offsets-20-> Vector(1),__consumer_offsets-37-> Vector(1),connect-offsets-9-> Vector(1),connect-status- 4-> Vector(1),__consumer_offsets-48-> Vector(1),__consumer_offsets-40-> Vector(1),__consumer_offsets-29-> Vector(1),__consumer_offsets-18-> Vector(1),connect- offsets-14-> Vector(1),__consumer_offsets-7-> Vector(1),__consumer_offsets-34-> Vector(1),__consumer_offsets-45-> Vector(1),__consumer_offsets-23-> Vector(1), connect-offsets-6-> Vector(1),connect-status-1-> Vector(1),connect-offsets-17-> Vector(1),connect-offsets-0-> Vector(1),connect- offsets-22-> Vector(1),__consumer_offsets-26-> Vector(1),connect-offsets-11-> Vector(1),__consumer_offsets-15-> Vector(1),__consumer_offsets-4-> Vector(1 ),__consumer_offsets-42-> Vector(1), __consumer_offsets-9-> Vector(1),__consumer_offsets-31-> Vector(1),__consumer_offsets-20-> Vector(1),connect-offsets-3-> Vector(1),__consumer_offsets-1-> Vector(1 ),__ consumer_offsets-12-> Vector(1),connect-offsets-8-> Vector(1),connect-offsets-19-> Vector(1),connect-status-3-> Vector(1),__ confluent。 support.metrics-0-> Vector(1),__consumer_offsets-17-> Vector(1),__consumer_offsets-28-> Vector(1),__consumer_offsets-6-> Vector(1),__consumer_offsets-39-> Vector(1 ),__consumer_offsets-44-> Vector(1),connect-offsets-16-> Vector(1),connect-status-0-> Vector(1),connect-offsets-5-> Vector(1),connect- offsets-21-> Vector(1),__consumer_offsets-47-> Vector(1),__consumer_offsets-36-> Vector(1),__consumer_offsets-14-> Vector(1),__consumer_offsets-25-> Vector(1), __consumer_offsets-3-> Vector(1),__consumer_offsets-30-> Vector(1),__consumer_offsets-41-> Vector(1),connect-offsets-13-> Vector(1),connect-offsets-24-> Vector (1),connect-offsets-2-> Vec tor(1),connect-configs-0-> Vector(1),__consumer_offsets-11-> Vector(1),__consumer_offsets-22-> Vector(1),__consumer_offsets-33-> Vector(1),__consumer_offsets-0 -> Vector(1),connect-offsets-7-> Vector(1),connect-offsets-18-> Vector(1)))(kafka.controller.KafkaController)[36mkafka_1 | [0m [2018-06-12 20:24:47,461]调试[Controller id = 1]主题不在代理1 Map()的首选副本中(kafka.controller.KafkaController)[36mkafka_1 | [0m [2018-06-12 20:24:47,462] TRACE [ Controller id = 1]经纪人1的领导者失衡率为0.0(kafka.controller.KafkaController)

我遇到了同样的问题,并且做了以下解决我的问题的事情:

  1. 检查您使用的Kafka版本。 传递给NewAsyncProducer时,配置中指定的默认Kafka版本为V0_8_2_0 确保在配置中指定正确的Kafka版本:

     config := sarama.NewConfig() config.Version = sarama.V1_1_0_0 
  2. 确保您传递的代理URL正确。 您应该传递代理URL,而不是Zookeeper URL或其他URL。 默认的kafka端口为9092因此,如果您使用默认端口,则网址应类似于BROKER_URL:9092

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM