零、最近试用了一下RocketMQ
消息中间件作用:
1、应用解耦
AB应用不在互相依赖
2、流量削峰
流量达到高峰的时候,通常使用限流算法来控制流量涌入系统,避免系统被击瘫,但是这种方式损失了一部分请求
此时可以使用消息中间件来缓冲大量的请求,匀速消费,当消息队列中堆积消息过多时,我们可以动态上线增加消费端,来保证不丢失重要请求。
3、大数据处理
消息中间件可以把各个模块中产生的管理员操作日志、用户行为、系统状态等数据文件作为消息收集到主题中
数据使用方可以订阅自己感兴趣的数据内容互不影响,进行消
一、学习网站
官网:
Apache RocketMQhttp://rocketmq.apache.org
GitHub:
GitHub - apache/rocketmq: Mirror of Apache RocketMQhttps://github.com/apache/rocketmq
二、版本要求
| Version | Client | Broker | NameServer |
|---|---|---|---|
| 4.0.0-incubating | >=1.7 | >=1.8 | >=1.8 |
| 4.1.0-incubating | >=1.6 | >=1.8 | >=1.8 |
| 4.2.0 | >=1.6 | >=1.8 | >=1.8 |
| 4.3.x | >=1.6 | >=1.8 | >=1.8 |
| 4.4.x | >=1.6 | >=1.8 | >=1.8 |
| 4.5.x | >=1.6 | >=1.8 | >=1.8 |
| 4.6.x | >=1.6 | >=1.8 | >=1.8 |
三、安装
1、下载源码 rocketmq-master.zip rocketmq源码 与rocketmq-externals-master.zip 网页端
2、在Linux上安装Maven
①下载Maven
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
②添加阿里云镜像
修改maven/conf目录下的settings.xml 在mirrors节点下添加
aliyun-maven * aliyun maven http://maven.aliyun.com/nexus/content/groups/public
③配置maven环境变量
export M2_HOME=/usr/local/maven export PATH=$PATH:$M2_HOME/bin
还依赖java环境,配置java环境变量
export JAVA_HOME="/usr/java/jdk1.8.0_181-amd64" export CLASS_PATH="$JAVA_HOME/lib" export PATH=".$PATH:$JAVA_HOME/bin
环境变量修完执行source /etc/profile立即生效
④进入rocketmq主目录编译项目(rocketmq-master.zip)
mvn -Prelease-all -DskipTests clean install -U
打包成功,启动包在路径 /distribution/target/rocketmq-4.6.1/下
将rocketmq-4.6.1 移动到/usr/local下
三、启动rocketMQ
1、启动nameserver
进入/usr/local/rocketmq-4.6.1/bin 执行
./mqnamesrv
正常启动如下
2、启动Broker
默认会占用4G内存+8G内存,实际执行runserver.sh 和 runbroker.sh 自己调试修改下默认内存为512M
./mqbroker -n localhost:9876
正常提示
3、测试消息发送
使用tool.sh脚本执行测试程序
在bin目录下执行
./tools.sh org.apache.rocketmq.example.quickstart.Producer
提示如下表示成功
4、测试接收消息
./tools.sh org.apache.rocketmq.example.quickstart.Consumer
四、网页控制台安装
1、下载
GitHub - apache/rocketmq-externals: Mirror of Apache RocketMQ (Incubating)Mirror of Apache RocketMQ (Incubating). Contribute to apache/rocketmq-externals development by creating an account on GitHub.https://github.com/apache/rocketmq-externals
中文指南:
https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.mdhttps://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md
2、上传服务器解压缩
进入rocketmq-console目录
执行编译
mvn clean package -Dmaven.test.skip=true
3、启动
编译成功后在rocketmq-console/target目录下执行rocketmq-console-ng-1.0.1.jar
启动时,直接动态添加nameserver地址或编辑application.properties添加属性
java -jar rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr=127.0.0.1:9876
4、启动完成
直接访问服务器8080端口即可
五、常见错误
1、编译时包无法在mirror上找到 提示502错误
原因:网络不好或maven仓库服务器出错
重试即可,或者欢迎镜像仓库
2、发送失败提示connect to null failed
原因:不知道nameserver在哪儿,在tools脚本中添加
export NAMESRV_ADDR=localhost:9876
3、 启动broker失败 Cannot allocate memory
原因:jvm启动初始化内存分配大于物理内存
修改启动脚本中的jvm参数,默认给的是4G、8G 太大了,调小一些
runbroker.sh broker
runserver.sh nameserver



