jjzjj

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

coder 2024-07-09 原文

版本:GoLang 1.10.2
卡夫卡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] DEBUG [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)

最佳答案

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

  • 检查您使用的是什么版本的Kafka。传递给NewAsyncProducer时,配置中指定的默认Kafka版本为V0_8_2_0。确保在配置中指定正确的Kafka版本:
    config := sarama.NewConfig()
    config.Version = sarama.V1_1_0_0
    
  • 确保您传递的代理URL正确。您应该传递代理URL,而不是Zookeeper URL或其他URL。默认的kafka端口为9092,因此,如果您使用默认端口,则网址应类似于BROKER_URL:9092
  • 关于docker - 无法使用Sarama Golang软件包创建Kafka生产者客户端-“客户端/元数据在获取元数据时从代理处出错:EOF”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50826247/

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

    1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

      我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

    2. Ruby Sinatra 配置用于生产和开发 - 2

      我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

    3. ruby - Ruby 有 `Pair` 数据类型吗? - 2

      有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

    4. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

      您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

    5. ruby - 我如何添加二进制数据来遏制 POST - 2

      我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

    6. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

      无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

    7. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

      本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

    8. 使用canal同步MySQL数据到ES - 2

      文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

    9. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

      我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

    10. 软件测试基础 - 2

      Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

    随机推荐