kafka初次使用时遇到的巨坑

由于项目需要一个消息队列,于是在我经过研究后选择了kafka,结果刚装上就搞得怀疑人生了。
安装看的这篇博客安装的:Ubuntu 环境安装 Kafka、配置运行测试 Kafka 流程笔记
这篇博客是用kraft的方式安装的,安装起来挺简单的。
刚安装完kafka,看着这么简单的安装过程,以为kafka使用起来会很简单,结果就遇到了下面的巨坑,搞了两天。
我使用的是python,一开始我选择的是kafka-python,用着网上找的生产者消费者的教程试了老半天,既不报错,也不运行成功,就卡着不动,最后等了半天终于抛了个异常kafka.errors.KafkaTimeoutError: KafkaTimeoutError: Failed to update metadata after 60.0 secs.
查了好久博客,几乎都是说版本不对应啥的问题的:
Kafka巨坑:org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 问题排查
kafka问题:第一次消费数据巨慢或者org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after
python脚本生产kafka消息问题处理两则
最后看到了这个,才初步确定了排查方向:
外网通过python开发Kafka生产者出现KafkaTimeoutError:Timeout after waiting for 10 secs
按照这篇博客的方式修改了kafka的配置文件,终于报错变了,变成kafka.errors.NodeNotReadyError: NodeNotReadyErrorkafka.errors.NoBrokersAvailable: NoBrokersAvailable,又经过一系列的研究:
在windows上,python kafka返回“nodenoteradeyerror”
解决kafka.errors.NodeNotReadyError: NodeNotReadyError
Kafka连接报错:kafka.errors.NoBrokersAvailable: NoBrokersAvailable
Python通过SSH隧道链接Kafka
我甚至怀疑是不是kafka-python的问题,然后我就去找替代库,发现了confluent-kafka,看了几篇文章,似乎这个库的性能比kafka-python要好,而且也是kafka推荐的库,于是我果断换成这个库。
结果发现,我错怪了kafka-python了,不是库的问题,就是kafka配置的有问题,报了一个新错误%3|1704271785.388|FAIL|rdkafka#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#localhost:9092 failed: Unknown error (after 2068ms in state CONNECT)
这个时候我就很莫名其妙,为什么我配置的是我kafka所在的服务器ip,但是实际上连到本地来了,接着我就debug了一下,然后发现运行以下代码时,topics里可以获取到kafka的所有topic,但是其中brokers属性中,连接的host是localhost,并不是服务器ip。

host: str = "test_kafka:9092"
a = AdminClient({'bootstrap.servers': host})
topics = a.list_topics()

接着我想起这篇文章解决kafka.errors.NodeNotReadyError: NodeNotReadyError说的

bootstrap.servers实际上是引导地址,而不是客户端真正建立长链接的地址。

于是我怀疑是不是配置文件没有修改全,就像Nginx使用apt方式安装的话,配置文件有好几个一样,会不会kafka也是一样。于是我把config/下的所有*.properties文件都检查了一遍,最后将这几个文件中涉及ip和host的部分全部改成服务器ip,重启后终于可以正常发送和接受消息了。

  • connect-standalone.properties
  • consumer.properties
  • producer.properties
  • server.properties
  • kraft/broker.properties
  • kraft/controller.properties
  • kraft/server.properties
  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值