赞
踩
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Kafka 是一个由 LinkedIn 开发的分布式消息系统,它于2011年年初开源,现在由著名的 Apache 基金会维护与开发。 Kafka 使用 Scala 实现,所以kafka发布的版本号通常含有两部分,例如kafka_2.12-3.1.0.tgz,其中,2.12为scala版本,3.1.0为kafka版本, Kafka 是基于消息发布﹣订阅模式实现的消息系统,具体实现原理参考官方文档这里不再冗余阐述。
我的应用场景:服务器上部署了两套软件,一个是负责日常事务处理的app应用,另一个是负责项目立项管理的springboot项目,为了方便用户随时查看是否有项目立项流程发起或者走到了哪个节点,项目立项这个软件需要把流程信息推送到kafka中间件,app订阅到相关消息后查询显示出来。下面讲一下具体的实现,这个功能是我在第一次接触的情况下,只用了一两天就搞定的,跟网上查到的资料相比有坑的地方会标红显示。
官网下载链接
我下载的是kafka_2.12-3.1.0.tgz 这个版本,应该是比较新的,可以兼容以前的旧版本。
kafka只需要解压下载的压缩包就行了,我这里解压的路径是D:\kafka_2.12-3.1.0。
kafka的运行需要依赖zookeeper, kafka从2.8.0版本之后就内置了zookeeper.jar文件,用命令行启动即可,不需要单独安装zookeeper了
想要启动kafka需要修改kafka配置文件和zookeeper配置文件,配置文件都在跟目录下面的config文件夹下。
kafka 服务端配置在server.properties文件中,这里需要修改两处配置:listeners 和 log.dirs
listeners:服务器监听的地址,修改如下:
listeners=PLAINTEXT://localhost:9092
log.dirs:日志文件修改为自定义的日志目录,我的是log.dirs=D:/kafka_2.12-3.1.0/logs
这里最好改一下,默认日志放在/temp路径,Linux环境因为临时文件夹temp不稳定的原因也需要改,Windows环境改到当前目录方便后面出现问题时删除日志重新启动
zookeeper配置文件为zookeeper.properties,只需修改一处:
dataDir:zookeeper存储数据的路径,Windows环境路径要用D:\\kafka3.2.1\\datas这种形式
我遇到了Kafka异常重启后提示错误:The Cluster ID XXXXX doesn‘t match stored clusterId Some(XXXXX) in meta.properties.
但我没有找到这个meta.properties文件,查了半天原因是log.dirs路径配置的不对
接下来进入测试阶段:
1. 启动zookeeper
先启动zookeeper,进入kafka安装根目录下,地址栏输入cmd,然后回车,注意启动之后不要关闭窗口。启动命令如下:
本地:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
服务器要用绝对路径: start cmd /k D:\kafka3.2.1\bin\windows\zookeeper-server-start.bat D:\kafka3.2.1\config\zookeeper.properties
没有报错就可以了
2. 启动kafka服务端
同样进入kafka安装根目录下,地址栏输入cmd,然后回车,启动之后不要关闭窗口。启动命令如下:
启动kafka-server
本地:
.\bin\windows\kafka-server-start.bat .\config\server.properties
服务端:
start cmd /k “C:\EAMServer\kafka3.2.1\bin\windows\kafka-server-start.bat C:\EAMServer\kafka3.2.1\config\server.properties”
也是没有报错就算启动成功了,如果启动kafka失败,并出现以下异常,删除logs文件夹下的meta.properties文件即可。
The Cluster ID xxxx doesn’t match stored clusterId Some(finN2zUTRWaXMomXCknRew) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.
3. 创建kafka-topics
启动zookeeper和kafka服务端这两个命令窗口是必需的,这里通过脚本创建topic通常是用于本地测试kafka服务是否能正常发布和接收消息(新手可以用脚本创建一下测测,用Java实现发送消息可自动创建topic
)
同样进入kafka安装根目录下,地址栏输入cmd,然后回车,启动之后不要关闭窗口。假设创建一个名字为test的topic命令如下:
start cmd /k .\bin\windows\kafka-topics.bat --create --bootstrap-server 10.0.102.132:9092 --replication-factor 1 --partitions 1 --topic test
这里有坑:新版的主题通过kafka服务端创建即可,也就是 --bootstrap-server这个地址,网上好多资料都是旧版的连接zookeeper创建的,在新版可能报错
–partitions 1意思是建立一个分区,–replication-factor 1是配置一个副本,因为本文讲的是单节点服务所以默认一个分区,集群可设置多个。启动之后,kafka-topics处于等待创建topic状态,一段时间内如果不createTopic,kafka-topics将自动断开
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
启动生产者之后就可以发送消息了
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
启动消费者之后生产者发送的消息,消费者端就能收到了。
至此,消息队列kafka就安装完毕,完全可以通过命令行测试服务是否正常。
我用的是kafka Tool,下载下来的软件名字是Offset Explorer 2.3
用客户端工具看所有的Topic和接收的消息内容非常直观,实乃开发利器。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。