0%

RocketMQ 安装部署教程(单master)

比较详细的介绍单机部署 RocketMQ

Linux 环境

CentOS 7.6 64位
RocketMQ 4.6.1
JDK 1.8.0_181
Maven 3.6.0

下载

1
wget http://mirror.bit.edu.cn/apache/rocketmq/4.6.1/rocketmq-all-4.6.1-bin-release.zip

安装

解压

1
unzip rocketmq-all-4.6.1-bin-release.zip

移动目录

给解压出来的文件夹移动个位置,我这里移动到/usr/local/rocketmq

1
mv rocketmq-all-4.6.1-bin-release /usr/local/rocketmq

环境变量设置

注意你刚才将文件夹移动到哪儿了,我这里是/usr/local/rocketmq

1
2
echo 'export ROCKETMQ_HOME=/usr/local/rocketmq' >> /etc/profile
echo 'export PATH=$ROCKETMQ_HOME/bin:$PATH' >> /etc/profile

使环境变量生效

1
source /etc/profile

修改默认启动配置

RocketMQ默认配置要求很高,开始启动前需要先修改这些参数,否则的话,我们很有可能会遇到内存分配或者不够的问题(memory alloc failed):

修改 bin/runserver.sh

1
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改 bin/runbroker.sh

1
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

修改 bin/tools.sh

1
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

修改 broker 配置

broker的配置文件为conf/broker.conf,修改内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 所属集群名字(同一主从下: Master 和 Slave 名称要一致)
brokerClusterName = DefaultCluster

# Broker 名字,注意此处不同的配置文件填写的不一样
brokerName = broker-a

# 0 表示 Master,> 0 表示 Slave
brokerId = 0

# Broker 对外服务的监听端口, 如果一台机器上启动了多个Broker,则要设置不同的端口号,避免冲突
listenPort = 10911

# nameServer地址,如果nameServer是多台集群的话,就用分号分割,比如
# namesrvAddr=192.168.0.1:9876;192.168.0.2:9876
namesrvAddr = 127.0.0.1:9876

# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable = false

# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup = false

# 与fileReservedTime参数呼应,表明在几点做消息删除动作,默认值04表示凌晨4点
deleteWhen = 04

# 在磁盘上保存消息的时长,单位是小时,自动删除超时的消息
fileReservedTime = 48

# brokerRole有3种:SYNC_MASTER、ASYNC_MASTER、SLAVE
# 关键词 SYNC 和 ASYNC 表示 Master 和 Slave 之间同步消息的机制
# SYNC 的意思是当 Slave 和 Master 消息同步完成后,再返回发送成功的状态
brokerRole = ASYNC_MASTER

# 刷盘方式 ASYNC_FLUSH 异步刷盘; SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH

启动

运行 namesrv 节点

执行如下命令

1
nohup sh mqnamesrv &

查看log

1
tail -f ~/logs/rocketmqlogs/namesrv.log

出现 The Name Server boot success... 表示 namesrv 启动成功

运行 broker 节点

执行如下命令

1
nohup sh mqbroker &

查看log

1
tail -f ~/logs/rocketmqlogs/broker.log

出现 The broker[%s, 172.30.30.233:10911] boot success... 表示 broker 启动成功,其中 %s是指broker的IP地址

测试

测试准备

现在我们进行一下生产者/消费者测试,先声明一下NAMESRV_ADDR

1
export NAMESRV_ADDR=localhost:9876

进入rocketmq目录

1
cd /usr/local/rocketmq/

测试生产者

1
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

出现SendResult [sendStatus=SEND_OK, msgId= ...表示生产者测试成功

测试消费者

1
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

出现ConsumeMessageThread_%d Receive New Messages: [MessageExt...表示消费者试成功

停止服务

1
2
sh mqshutdown broker
sh mqshutdown namesrv