2023-05-21
内卷九股文
0

目录

RocketMQ
源码下载
Idea导入源码
NameServer的启动
Broker的启动
dashboard的启动
总结

RocketMQ是我们“家喻户晓”的消息中间件,本身是阿里开源、java语言实现的,它的官方文档对我们国人非常友好。除了基础的使用,对RocketMQ的源码以及实现原理的掌握是我们迈向高级开发必不可少的内容,此文是对RocketMQ深入了解的开篇之作,搭建一套自己的RocketMQ源码环境。

RocketMQ

源码下载

官方下载地址 上找到需要下载的版本,此处我下载的是V5.1的版本,选择Source下载

image.png

这一步非常简单,将下载的压缩包解压到需要存放项目的目录上。

Idea导入源码

从解压的目录中选择到源码包 rocketmq-all-5.1.0 -> 选中pom.xml -> open导入

image.png

然后等待项目构建完成即可

image.png

NameServer的启动

由于是Java语言的实现,MQ的启动依赖JDK,需要JDK8以上的版本,查看当前系统JDK版本 java -version

image.png

启动 namesrv 服务,找到 NameServerStartup 类,运行 main 方法

image.png

如果提示以下问题,不要慌,踩到坑就给他填上 image.png

以上问题出现的原因是JDK版本太高了,JDK自带工具包没有匹配上的原因,切换为JDK8就解决了

image.png

再次启动 NameServerStartup 类的 main 方法,提示了 Please set the ROCKETMQ_HOME variable in your environment to match the location of the RocketMQ installation

image.png

这是因为需要在环境变量中查找 ROCKETMQ_HOME 为命名的 RocketMQ 的配置目录,在启动配置上指定对应的目录 ROCKETMQ_HOME=./distribution 即可

image.png

再次启动,提示 The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876 即为启动成功

image.png

Broker的启动

启动 Broker 服务,先找到 broker 项目目录 BrokerStartup 类,运行 main 方法

image.png

同样的提示环境变量问题 Please set the ROCKETMQ_HOME variable in your environment to match the location of the RocketMQ installation

配置上与server一致,不同的是,Broker需要指定配置文件,在 Program arguments 中添加 -c ./distribution/conf/broker.conf 配置

image.png

找到 broker.conf 配置文件,指定IP和添加server服务端地址 brokerIP1=127.0.0.1 namesrvAddr=127.0.0.1:9876

image.png

再次启动 Broker,提示 The broker[broker-a, 127.0.0.1:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876 即为启动成功

image.png

你以为这就结束了吗?no no no,服务虽然启动了,也可以正常连接使用,但是我们还缺少了一个至关重要的组件,那就是 dashboard

dashboard的启动

dashboard 的源码并不在上面下载的RocketMQ的源码当中,需要单独下载,下载地址 dashboard

image.png

解压源码,Idea导入,编译使用JDK1.8,否则会出现一些Netty异常,此处不过多讲解,本身是SpringBoot项目,修改 application.properties 配置文件,指向本地启动的 NameServer 地址

properties
rocketmq.config.namesrvAddr=localhost:9876

找到 App 类,运行 main 方法,启动成功,访问 http://localhost:8080/ 即可

image.png

查看控制台是否连接成功

image.png

总结

总结一下,本文主要整理了RocketMQ源码部署的方式,可以更直观的观察消息发送与消费的执行流程。下一篇我会基于当前源码启动的服务,对功能特性进行总结,方便在开发中快捷开发。

本文作者:柳始恭

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!