// 如果我说它不好,应该会有大佬走出来告诉我它应该怎么用,嗯!
我通过 docker 在本地部署 kafka,之后在容器内部用 console-producer 和 console-consumer 脚本试了一下,功能是正常的,但容器外使用 golang 程序( sarama )连接却无法成功
zookeeper 中的注册信息是这样的:
get /brokers/ids/1001 {"listener_scurity_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://localhost:9092"],"jmx_port":-1,"host":"localhost","timestamp":"1585138788130","port":9092,"version":4}
docker 部署时使用的参数是:
KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_CREATE_TOPICS: "test:1:2" KAFKA_BROKER_ID: 1 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
kafka 版本 2.4.0, zookeeper 版本 3.4.13
sarama 反馈信息:“kafka: client has run out of available brokers to talk to (Is your cluster reachable?)”
sarama log:
[sarama] 2020/03/25 20:41:02 client/metadata fetching metadata for all topics from broker 127.0.0.1:9092 [sarama] 2020/03/25 20:41:02 Connected to broker at 127.0.0.1:9092 (unregistered) [sarama] 2020/03/25 20:41:02 client/metadata got error from broker -1 while fetching metadata: read tcp 127.0.0.1:52260->127.0.0.1:9092: read: connection reset by peer [sarama] 2020/03/25 20:41:02 Closed connection to broker 127.0.0.1:9092 [sarama] 2020/03/25 20:41:02 client/metadata no available broker to send metadata request to [sarama] 2020/03/25 20:41:02 client/brokers resurrecting 1 dead seed brokers [sarama] 2020/03/25 20:41:02 Closing Client kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
1 ysjiang4869 2020-03-26 00:09:06 +08:00 via Android ![]() advwrtised host name,去查一下,仅仅因为配置不了解就说难用,也太张口就来了 |
![]() | 2 nvkou 2020-03-26 01:14:21 +08:00 via Android 此 localhost 非彼 local host ? |
![]() | 3 ysmood 2020-03-26 01:46:47 +08:00 我觉是单纯只是设计上不友好,一般系统默认配置就能跑示例代码,而 kafka 非要设置额外的东西。而且在 docker 里还容易泄漏 pid 的 lock 文件。 所以我做了个 image 来处理这些琐碎的事,感兴趣可以试试 https://github.com/ysmood/kafka-image 这里注释了为什么我们要这样做 https://github.com/ysmood/kafka-image/blob/e58ee2c466890ba2d86d82a25def0d6828faa382/cmd/run/main.go#L24 |
![]() | 4 vindurriel 2020-03-26 04:36:55 +08:00 via iPhone 这里介绍了一种方法 开两个 listeners 以及为什么要这样做 rmoff.net/2018/08/02/kafka-listeners-explained/ |
![]() | 5 jiezhi 2020-03-26 07:20:43 +08:00 via iPhone ![]() 小伙子真会问问题,激发了程序员不服的心理,马上好多人过来教你。 |
![]() | 7 ArtIsPatrick 2020-03-26 08:06:10 +08:00 via iPhone 有勇气,就算我觉得难用,我也不敢来发帖。。。 |
![]() | 8 locoz 2020-03-26 08:21:12 +08:00 via Android 好好好,对对对。下一个。 |
![]() | 9 fengyj 2020-03-26 08:49:47 +08:00 via Android @ArtIsPatrick #7 +1 。是的呢,即使某些项目再难使用,文档再简陋,都不好意思发帖 bb,因为不清楚会引来多少程序员的不服和反驳。 PS: 个人觉得程序员最喜欢去反驳别人的观点,虽然我也是程序员 |
![]() | 10 yianing 2020-03-26 11:12:29 +08:00 via Android 东西是好东西,难用也是真的 |
![]() | 11 rrfeng 2020-03-26 11:32:22 +08:00 虽然楼主这个问题有点简单,但是 kafka 是真的难维护。 |
![]() | 12 STRRL 2020-03-26 11:35:25 +08:00 你正好踩到了在 docker 里跑 kafka 的一个坑, 参考下这个吧 https://github.com/wurstmeister/kafka-docker/wiki/Connectivity 在用一个轮子之前请确保理解了这个轮子, 要不然很容易犯错的 |
13 Mrpasserby 2020-03-26 12:44:21 +08:00 +1,难用的一笔,完全是 Java 工程师岗位创造机器 |
![]() | 14 whisky221 2020-03-26 12:52:48 +08:00 |
![]() | 15 Vegetable 2020-03-26 12:56:32 +08:00 网上得到问题答案的最好办法不是虚心请教,而是发布一个错误的答案等大佬来反驳。 |
16 julyclyde 2020-03-26 17:59:29 +08:00 说白了这不都怪你用 docker 么 跟 kafka 有啥关系? |