​

第一节:下载RocketMQ

演示:RocketMQ版本:4.5.1

下载地址

​https​​​ : ​​//archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip​

环境要求


  • Linux64位系统
  • JDK1.8(64位)
  • 源码安装需要安装Maven 3.2.x

第二节:安装RocketMQ

以二进制包安装

上传下载的安装包到服务器上

第一章:RocketMQ安装_安装

解压安装包

先查看下有没有安装unzip

unzip

出现下图则是有安装

第一章:RocketMQ安装_配置文件_02

出现下图则是没有安装

第一章:RocketMQ安装_配置文件_03

安装命令

yum install unzip

第一章:RocketMQ安装_配置文件_04

解压安装包并移动到指定目录

创建对应的目录/usr/local/server/rocketmq

 cd /usr/local/
mkdir server
cd server/
mkdir rocketmq

第一章:RocketMQ安装_配置文件_05

unzip rocketmq-all-4.5.1-bin-release.zip -d /usr/local/server/rocketmq

第一章:RocketMQ安装_安装包_06

更改文件名

cd /usr/local/server/rocketmq/
mv rocketmq-all-4.5.1-bin-release/ rocketmq
cd ..
mv rocketmq/ mq #出现两个rocketmq文件夹名,改上一个文件夹为mq

第一章:RocketMQ安装_结点_07

第一章:RocketMQ安装_配置文件_08

创建rocketmq存储目录

现有的目录结构是这样的

第一章:RocketMQ安装_安装包_09

创建存储目录

mkdir logs
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index

第一章:RocketMQ安装_配置文件_10

新创建文件夹说明


  • logs:存储日志目录
  • store:存储数据文件目录
  • commitlog:存储消息信息
  • consumequeue,index:存储 消息的索引数据

rocketMQ目录介绍


  • bin:启动脚本,包括shell脚本和CMD脚本
  • conf:实例配置文件 ,包括broker配置文件、logback配置文件等
  • lib:依赖jar包,包括Netty、commons-lang、FastJSON等

conf目录文件说明


  • 2m-2s-async :2主2从-异步
  • 2m-2s-sync :2主2从-同步
  • 2m-noslave :2主无从

这里演示单结点配置:只要先修改2m-2s-async配置实现。

cd 2m-2s-async

第一章:RocketMQ安装_安装_11

broker-a.properties   :单结点a配置文件
broker-a-s.properties :单结点a的从结点配置文件
broker-b.properties :单结点b配置文件
broker-b-s.properties :单结点b的从结点配置文件

第三节:单结点配置

配置hosts

vim /etc/hosts

添加nameserver和broker

# nameserver
192.168.88.131 rocketmq-nameserver1

# broker
192.168.88.131 rocketmq-master1

第一章:RocketMQ安装_配置文件_12

配置完成后, 重启网卡

systemctl restart network

进入conf配置文件夹

cd conf

第一章:RocketMQ安装_安装_13

进入2m-2s-async

cd 2m-2s-async

第一章:RocketMQ安装_安装_14

修改broker-a.properties

vim broker-a.properties

将下面的配置覆盖 broker-a.properties,保存

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
brokerIP1=192.168.88.131
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/server/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/server/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/server/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/server/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/server/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/server/mq/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

注:配置里的路径要与刚创建的文件夹路径保持一致,如有自定义修改

修改日志路径

进入conf 目录,替换所有xml中的${user.home},保证日志路径正确

第一章:RocketMQ安装_安装包_15

第一章:RocketMQ安装_配置文件_16

语法:

sed -i 批量替换作用

sed -i 's#原字符串#新字符串#g' 替换的文件
sed -i 's#${user.home}#/usr/local/server/mq/rocketmq#g' *.xml

第一章:RocketMQ安装_安装_17

说明替换成功了

第一章:RocketMQ安装_安装_18

修改 runbroker.sh

调整内存大小(这里只是演示用途,实际的内存大小要以生产环境为准)

cd ..
cd bin/
vim runbroker.sh

第一章:RocketMQ安装_RocketMQ_19

第一章:RocketMQ安装_安装包_20

 调整为1g

第一章:RocketMQ安装_RocketMQ_21

修改 runserver.sh

调整内存大小(这里只是演示用途,实际的内存大小要以生产环境为准)

vim runserver.sh

第一章:RocketMQ安装_配置文件_22

第一章:RocketMQ安装_安装包_23

第四节:环境变量配置

vim /etc/profile

在profile文件的末尾加入如下命令

#set rocketmq
ROCKETMQ_HOME=/usr/local/server/mq/rocketmq/
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH

输入:wq! 保存并退出, 并使得配置立刻生效:

source /etc/profile

先启动namesrv

nohup sh mqnamesrv &

第一章:RocketMQ安装_安装_24

服务没启动成功,查看下日志

cd /usr/local/server/mq/rocketmq/bin/
cat nobup.out

第一章:RocketMQ安装_安装包_25

原因是输入的命令写成了

nohup sh mqnamesrc &    ##应该是 nohup sh mqnamesrv &

输入

ohup sh mqnamesrv &

然后回车

通过jps查看

第一章:RocketMQ安装_安装_26

启动broker

 nohup sh mqbroker -c /usr/local/server/mq/rocketmq/conf/2m-2s-async/broker-a.properties > /dev/null 2>&1 &

 ​

第一章:RocketMQ安装_安装包_27

关闭namesrv和broker

关闭namesrv服务

#进入bin
sh mqshutdown namesrv

第一章:RocketMQ安装_配置文件_28

关闭broker服务

sh mqshutdown broker

第一章:RocketMQ安装_结点_29

通过jps验证下

第一章:RocketMQ安装_安装包_30

第五节:防火墙配置

宿主机需要远程访问虚拟机的rocketmq服务和web服务,需要开放相关的端口号,简单粗暴的方式是直接关闭防火墙

# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙的状态
firewall-cmd --state
# 禁止firewall开机启动
systemctl disable firewalld.service

或者为了安全,只开放特定的端口号,RocketMQ默认使用3个端口:9876 、10911 、11011 。如果防火墙没有关闭的话,那么防火墙就必须开放这些端口:


  • nameserver 默认使用 9876 端口
  • master 默认使用 10911 端口
  • slave 默认使用11011 端口

执行以下命令:

# 开放name server默认端口
firewall-cmd --remove-port=9876/tcp --permanent
# 开放master默认端口
firewall-cmd --remove-port=10911/tcp --permanent
# 开放slave默认端口 (当前集群模式可不开启)
firewall-cmd --remove-port=11011/tcp --permanent
# 重启防火墙
firewall-cmd --reload

第六节:RocketMQ架构介绍


  • Producer:消息的发送者;举例:发信者
  • Consumer:消息接收者;举例:收信者
  • Broker:暂存和传输消息;举例:邮局
  • NameServer:管理Broker;举例:各个邮局的管理机构
  • Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
  • Message Queue:相当于是Topic的分区;用于并行发送和接收消息

第一章:RocketMQ安装_结点_31