RocketMQ学习笔记
I'm bob,chen。 成为大神,成为大神,成为大神!
目录

新公司使用的MQ中间件是RoketMQ,于是就要学习RokectMQ的相关知识。
RokectMQ官网及常用链接
RocketMQ官网:http://rocketmq.apache.org/
RocketMQ官网上总结的常见的问题解决方案:http://rocketmq.apache.org/docs/faq/
为什么选择RocktMQ?
RocketMQ的安装
对于RocketMQ的安装,每个开发者由于自身环境的不同所以有不同的选择,这里我是在Linux环境下安装的。
安装RocketMQ需要的软件
在RocketMQ的官网上,明确描述了安装RokectMQ所需的软件和安装步骤。具体如下:
准备好了这些软件,我们开始安装RocketMQ。这些环境的安装等我在出一篇博客。
RockeMQ单机
在官网(http://rocketmq.apache.org/)的左上角,quick start里面有详细的安装教程。其实我们只是在安装过程中,解决自己的遇到的一些问题就可以了。下面一起来看看,我的安装:
1.下载、解压、构建和进入指定启动目录
下载链接(镜像地址):
https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-source-release.zip
备份地址:
https://downloads.apache.org/rocketmq/4.8.0/rocketmq-all-4.8.0-source-release.zip
解压、构建和进入启动目录等顺序操作命令如下:
> unzip rocketmq-all-4.8.0-source-release.zip > cd rocketmq-all-4.8.0/ > mvn -Prelease-all -DskipTests clean install -U > cd distribution/target/rocketmq-4.8.0/rocketmq-4.8.0
2. 启动Name Server
2.1 启动Name Server
nohup sh bin/mqnamesrv &
2.2 查看name Server启动日志(检验Name Server是否启动成功)
tail -f ~/logs/rocketmqlogs/namesrv.log
当日志中有了:Name Server boot success。 表示已经启动成功。
2.3 我本地的启动操作实例截图
3.启动Broker
3.1 启动Broker
nohup sh bin/mqbroker -n localhost:9876 &
3.2 查新Broker启动日志
tail -f ~/logs/rocketmqlogs/broker.log
· 这个位置要特别注意了,我在这个位置采坑了。
如果输入“tail -f ~/logs/rocketmqlogs/broker.log ”命令,在broker.log日志可以看到:The broker[DEFAULT_BROKER, xx.xx.xx.xx:xx] boot success. serializeType=JSON and name server is localhost:9876。表示Broker启动成功。
如果看到:tail: 无法打开"/home/zookeeper/logs/rocketmqlogs/broker.log" 读取数据: 没有那个文件或目录。具体如下图所示时,说明broker没有启动成功。
通过其他博客,最终定位了问题并提供了解决方案(详见后面RoketMQ的采坑--MQ Broker启动失败章节)。
4.安装成功后测试
确保Name Server启动成功,Broker启动成功后,可以官网提供的案例,测试mq是否正常可用。
4.1 发送消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
我本地测操作实例:
4.2 获取消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
我本地的操作实例:
至此,RocketMQ的单机版安装就完成了
RoketMQ集群
待熟悉之后,补充进来。
云服务器上安装RoketMQ
待研究,补充进来。
RoketMQ的采坑
1.Broker启动时失败
Broker启动失败太不明显了。在查看Broker启动日志时,会报这个错---》tail: 无法打开"/home/zookeeper/logs/rocketmqlogs/broker.log" 读取数据: 没有那个文件或目录。
通过查阅博客,发现问题在于:RocketMQ Broker 默认的jvm参数堆空间需要的太大导致的。
打开当前目录下的nohup.out文件,发现问题:
解决方案:
编辑bin/runbroker.sh文件,如下:
将默认设置的内存注释掉,因为它给的太大了,都是以g为单位的,一般虚拟机的内存不会这么大;在下方将其修改为合适的大小,如我给的是256m、256m、128m。修改完成后保存,重新启动Broker(消息服务器),通过broker.log查看,如下:
修改之前的jvm配置
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" |
修改之后的配置为:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m" |
重启mqbroker即可。
重启mqbroker。
相关博客:
https://blog.csdn.net/m0_43404934/article/details/110277084
其他有用的链接
https://downloads.apache.org/rocketmq/rocketmq-spring/2.2.0/rocketmq-spring-rocketmq-spring-all-2.2.0.zip