前言
发现公司这边的消息中间件采用了aliyun的RocketMQ服务,熟悉开源的同学都知道,RocketMQ是国内最早一批捐献Apache并成功毕业的项目。架构设计参考了kafka的模式,所以如果你了解kafka的架构,对于RocketMQ就可以轻车熟路了,虽然参考了kafka,但是RocketMQ也有很多的升级,比如Broker的注册和发现就采用了内部的NameServer,没有引入更多的第三方依赖,而且添加了诸如消息回溯、事务消息、延时消息等特色功能。由于之前没有接触过RocketMQ(之前一直用的kafka和RabbitMQ),准备研究一番,也为了后面集成spring boot metrics监控RocketMQ客户端信息做准备。研究一个开源项目,最好的方法就是Debug,所以记录下本地搭建RocketMq的调试环境过程
生成安装包
项目地址:https://github.com/apache/rocketmq ,从这个地址下载项目后,导入到IDEA开发工具,执行mvn install,生成安装RocketMQ包,生成成功后,在distribution模块下,会有如下目录,这个目录等下会用到
启动NameServer
找到namesrv模块,运行NamesrvStartup的main方法,这个时候会提示你,需要设置ROCKETMQ_HOME,提示信息如下:
这个时候就需要第一步生成的目录,拷贝/Users/kl/githubnamespace/rocketmq/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1目录,在IDEA的运行设置界面,添加如下参数:
-Drocketmq.home.dir=/Users/kl/githubnamespace/rocketmq/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1
如:
然后在启动,就可以成功启动了
启动broker
参照启动NameServer的模式,找到borker模块,设置好ROCKETMQ_HOME,在用相同的方式采用-D方式,配置下NameServer的地址,如:
-Drocketmq.namesrv.addr=127.0.0.1:9876
然后启动即可,此时一个完整的跑在IDEA中的单节点架构的RocketMQ服务就搭建好了
安装RocketMQ Console
为了更好的观察了解RocketMQ的功能,可以安装一个web管理控制台,这个需要用到另一个项目
项目地址:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
安装成功后,就可以通过web页面查询producer发送的message信息,打开浏览器,输入:http://localhost:8080。就可以看到如下页面:
尽情的DEBUG
一切准备就绪后,可以找到项目的example模块,里面内置了各种特性功能的使用案例,接下来就可以一个一个案例Runing起来,尽情的Deubg