引入MQ后的架构演进
MQ的选择
消息队列对比参照表:
RocketMQ vs. ActiveMQ vs. Kafka:
参考至:
CentOS7上搭建RocketMQ
环境要求:
CentOS 7.2
64位JDK1.8+
4G+的可用磁盘空间
1、下载RocketMQ的二进制包,我这里使用的是4.5.1版本,下载地址如下:
使用wget命令下载:
[root@study-01 ~]# cd /usr/local/src
[root@study-01 /usr/local/src]# wget http://mirror.bit.edu.cn/apache/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
2、解压下载好的压缩包,并移动到合适的目录下:
[root@study-01 /usr/local/src]# unzip rocketmq-all-4.5.1-bin-release.zip
[root@study-01 /usr/local/src]# mv rocketmq-all-4.5.1-bin-release /usr/local/rocketmq-4.5.1
注:若没有安装unzip命令则使用如下命令安装:
yum install -y unzip
3、进入rocketmq的根目录并查看是否包含如下目录及文件:
[root@study-01 /usr/local/src]# cd /usr/local/rocketmq-4.5.1
[root@study-01 /usr/local/rocketmq-4.5.1]# ls
benchmark bin conf lib LICENSE NOTICE README.md
4、没问题后,使用如下命令启动Name Server:
[root@study-01 /usr/local/rocketmq-4.5.1]# nohup sh bin/mqnamesrv &
[1] 2448
[root@study-01 /usr/local/rocketmq-4.5.1]#
5、查看默认的9876端口是否被监听,以验证Name Server是否启动成功:
[root@study-01 /usr/local/rocketmq-4.5.1]# netstat -lntp |grep java
tcp6 0 0 :::9876 :::* LISTEN 2454/java
[root@study-01 /usr/local/rocketmq-4.5.1]#
6、启动Broker:
[root@study-01 /usr/local/rocketmq-4.5.1]# nohup sh bin/mqbroker -n localhost:9876 &
[2] 2485
[root@study-01 /usr/local/rocketmq-4.5.1]#
7、验证Broker是否启动成功,如果启动成功,能看到类似如下的日志::
[root@study-01 /usr/local/rocketmq-4.5.1]# cat ~/logs/rocketmqlogs/broker.log |grep "boot success"
2019-08-04 01:27:38 INFO main - The broker[study-01, 192.168.190.129:10911] boot success. serializeType=JSON and name server is localhost:9876
[root@study-01 /usr/local/rocketmq-4.5.1]#
若想停止Name Server和Broker,则依次执行以下两条命令即可:
[root@study-01 /usr/local/rocketmq-4.5.1]# sh bin/mqshutdown broker
The mqbroker(2492) is running...
Send shutdown request to mqbroker(2492) OK # 输出该信息说明停止成功
[root@study-01 /usr/local/rocketmq-4.5.1]# sh bin/mqshutdown namesrv
The mqnamesrv(2454) is running...
Send shutdown request to mqnamesrv(2454) OK # 输出该信息说明停止成功
[2]+ 退出 143 nohup sh bin/mqbroker -n localhost:9876
[root@study-01 /usr/local/rocketmq-4.5.1]#
验证RocketMQ功能是否正常
1、验证生产消息正常,执行如下命令:
[root@study-01 /usr/local/rocketmq-4.5.1]# export NAMESRV_ADDR=localhost:9876
[root@study-01 /usr/local/rocketmq-4.5.1]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
正常的情况下,会看到一堆的类似于如下的输出,这是生产消息后成功的result:
SendResult [sendStatus=SEND_OK, msgId=C0A8BE810A690D7163610FCC253B03E7, offsetMsgId=C0A8BE8100002A9F000000000002BDFE, messageQueue=MessageQueue [topic=TopicTest, brokerName=study-01, queueId=3], queueOffset=249]
2、验证消费消息正常,执行如下命令:
[root@study-01 /usr/local/rocketmq-4.5.1]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
正常的情况下,会看到一堆的类似于如下的输出,这是消费的消息内容:
ConsumeMessageThread_6 Receive New Messages: [MessageExt [queueId=3, storeSize=180, queueOffset=242, sysFlag=0, bornTimestamp=1564853837073, bornHost=/192.168.190.129:34708, storeTimestamp=1564853837074, storeHost=/192.168.190.129:10911, msgId=C0A8BE8100002A9F000000000002AA4E, commitLogOffset