文章目录
最近项目中需要用到kafka,于是花时间学习了一下,在配置本地kafka的过程中遇到了一些问题,现在记录一下这些问题的解决办法。
kafka的安装配置
我安装的kafka版本是kafka_2.13-3.9.0,这一版的kafka是自带zookeeper的,不需要额外安装zookeeper。我参照的是这篇博文介绍的安装配置方法。
需要注意的是,在这篇博文的第三部分:启动kafka中, 作者介绍的启动代码是:
cd进入kafka安装目录
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties # -daemon 为后台启动
在我的电脑上,使用这种方法是启动不了zookeeper和kafka的,我使用的方法是:
cd进入kafka安装目录
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
bin\windows\kafka-server-start.bat config\server.properties
启动zookeeper提示:ZooKeeper audit is disabled
按照网上介绍的说法,我在kafka安装路径的config文件夹下的zookeeper.properties文件中加了这么一句代码:
# audit.enable=true # 解决 ZooKeeper audit is disabled 的问题
但是重新运行后还是报错:
后来发现,我在添加audit.enable=true
时,为了方便后面回顾,所以添加了注释,但是这个注释貌似不能跟代码处于同一行,所以我后面把代码修改成了:
# 解决 ZooKeeper audit is disabled 的问题
audit.enable=true
把注释和代码错开了,之后运行就没问题了。
启动kafka提示: ERROR Exiting Kafka due to fatal exception during startup
具体的问题看下图:
可以看到在报错的下一行(截图右边),有一系列的问号(???????),后面发现原因和之前zookeeper遇到的一样:
注释和代码放在同一行了,后面把他们分别放在一行就没问题了。
python中生产者传递消息时提示:KafkaTimeoutError: Failed to update metadata after 60.0 secs.
原因是我在kafka安装路径下的config文件夹下的server.properties文件中进行了如下设置:
# 该参数设置为true表示如果一个topic还没有被创建,则会自动创建该topic。
auto.create.topics.enable=false
此时,如果生产者传递的消息对应的主题没有事先创建的话,就会提示超时。
个人感觉只需要将auto.create.topics.enable
设置为true即可。但是我采用的方法是参照这篇博文的方法使用下面的代码创建主题:
cd 进kafka安装路径
bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic002
注意: 此处用的是--bootstrap-server
,我看有些博文推荐的是--zookeeper
,但是我用zookeeper命令会报错,还有就是此处的localhost后面的9092是kafka的服务器的端口,因为此处是直接连接的kafka。topic002
就是我所创建的主题名称。
后续生产者传递主题为topic002
的消息时就不会提示超时了。