1.RocketMQ简介
RocketMQ是Apache RocketMQ֢作为阿里开源的一款高性能、高吞吐量的分布式消息中间件
特点:
- 支持Broker和Consumer端消息过滤
- 支持发布订阅模型,和点对点
- 支持拉pull和推push两种消息模式
- 单一队列百万消息、亿级消息堆积
- 支持单master节点,多master节点,多master多slave节点
- 任意一点都是高可用,水平拓展,producer,consumer,队列都可以分布式
- 消息失败重试机制、支持特点level的定时消息
- 新版本底层采用Netty
- 4.3.X支持分布式事务
- 适合金融类业务,高可用性跟踪和审计功能
概念:
-
Producer:消息生成者
-
Producer Group:消息生产者组,发送同类消息的一个消息生成组
-
Consumer:消费者
-
Consumer Group:消息同类消息的多个实例
-
Tag:标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
-
Topic:主题,如订单类消息,queue是消息的物理管理单位,而topic是逻辑管理单位。一个topic下可以有多个queue,
默认自动创建是4个,手动创建是8个 -
Message:消息,每个Message必须指定一个Topic
-
Broker:MQ程序,接收生产的消息,提供给消费者消息的程序
-
Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
-
Offset:偏移量,可以理解为消息进度
-
commit log:消息存储会写在Commit log文件里面
官网地址:http://rocketmq.apache.org/
学习资源:
- http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/
- https://www.jianshu.com/p/453c6e7ff81c
2.环境准备
系统环境:Centos7 x64
JDK:jdk-8u201-linux-x64
Maven:3.2.x以上的版本均可
在这里就不讲解jdk和maven在linux的安装教程,可以自行百度
3. 安装RocketMQ
下载rocketmq
访问网址http://rocketmq.apache.org/docs/quick-start/ 如下图:
我们下载编译好的,这样无需自己再编译了,省去很多时间。点击上图红色框的链接。
然后就进入网址:http://rocketmq.apache.org/release_notes/release-notes-4.6.0/。下载Binary版本的rocketmq,如下图:
我写这篇笔记的时候,播主使用的是4.4.0版本的,最新版本为 rocketmq-all-4.6.0,我们选择编译好的zip包,即上图中红色框框标记的,点击后进入真正的下载页面:
随便选择一个即可,进行下载。下载完拷贝到centos的/usr/local/software目录下
安装unzip
yum -y install unzip
解压安装包并重命名
unzip rocketmq-all-4.4.0-source-release.zip
mv rocketmq-all-4.4.0 rocketmq
编译安装
进入rocketmq目录
cd rocketmq
编译安装,初次安装需要安装很多依赖包,需要等一会时间
mvn -Prelease-all -DskipTests clean install -U
启动Name Server
cd distribution/target/apache-rocketmq/
sh bin/mqnamesrv & 或者 nohup sh bin/mqnamesrv & 推荐nohub守护进程方式启动
如下图所示启动成功
nohub守护进程方式启动nameserver时查看日志 tail -f nohub.out(结尾:
The Name Server boot success. serializeType=JSON)表示启动成功
启动Name Server时有可能会出现如下问题,原因是因为Rocketmq配置的默认启动内存大于系统内存
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005ec800000, 4294967296, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 4294967296 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq/distribution/target/apache-rocketmq/hs_err_pid59779.log
解决如下:
编辑runserver.sh文件,修改默认内存,设置小于系统内存即可
vim bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
启动Broker
启动Broker(-n 指定nameserver地址,nameserver服务端口为9876,broker默认端口为10911)
sh bin/mqbroker -n localhost:9876 或 nohup sh bin/mqbroker -n localhost:9876 &
如下图所示启动成功
启动成功之后改为nohup守护进程方式重新启动。
启动Broker时有可能会出现以下问题,原因也是内存不足
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/rocketmq/distribution/target/apache-rocketmq/hs_err_pid60100.log
解决如下:
编辑runbroker.sh 修改JAVA_OPT
vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g"
关闭Nameserver和Broker
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv
设置环境变量
vi /etc/profile
将下面的配置添加到文件最底部
export PATH=$PATH:/usr/local/software/rocketmq/distribution/target/apache-rocketmq/bin
export NAMESRV_ADDR=localhost:9876
保存,并退出。
更新profile文件
source /etc/profile
说明:export NAMESRV_ADDR=localhost:9876是NAMESRV_ADDR环境变量
再重启nameserver和broker
4. 安装RocketMQ控制台
下载rocket-console
可视化
在git上下载rocket-console
地址:https://github.com/apache/rocketmq-externals
上传并解压
unzip rocketmq-externals-master.zip
安装编译
进入rocketmq-console
cd rocketmq-externals-master
cd rocketmq-console
务必修改下面两个,再进行打包
- 修改pom.xml版本号(官方bug)
将<rocketmq.version>4.4.0-SNAPSHOT</rocketmq.version>的SNAPSHOT去掉 - 修改application.xml里面的nameserver地址
cd src/main/resources/
vim application.properties
添加nameserver的地址
再回到rocketmq-console 目录进行打包编译
mvn clean package -Dmaven.test.skip=true
编译需要10多分钟的时间,请耐心等待
启动jar包
编译完成进入target目录启动jar包
正常启动 java -jar rocketmq-console-ng-1.0.0.jar
守护进程方式启动 nohub java -jar rocketmq-console-ng-1.0.0.jar &
访问控制台
在浏览器输入服务器ip:8080,访问rocketmq控制台
来源:CSDN
作者:盲流子开发
链接:https://blog.csdn.net/pjsdsg/article/details/104002499