簡體   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