RocketMQ的介绍以及部署

1.RockerMQ消息队列核心概念

1.1.RockerMQ消息队列的介绍及概念

RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。

目前RocketMQ在阿里云上有一个购买即可用的商业版本,商业版本集成了阿里内部一些更深层次的功能及运维定制。

RocketMQ的官网地址: http://rocketmq.apache.org

Github地址是https://github.com/apache/rocketmq

RabbitMQ消息队列的主要组件:

NameServer:负责记录各个Broker的信息,类似于微服务中的注册中心。

Broker:消息队列,具体存储消息数据。

在部署RabbitMQ时需要先启动NameServer然后再启动Broker。

1.2.RockerMQ消息队列架构原理

如下图集群模式所示:NameServer有多个节点组成高可用集群,记录Broker的路由信息,生产者会从NameServer中找到要存储的Broker信息,消费者也会从NameServer找到要读取的Broker信息,NameServer每个节点都会记录Brokerer的相关信息,Broker是存储消息数据的队列。

image-20220312163410667

2.部署RocketMQ消息队列

2.1.安装JAVA环境

1.解压jdk二进制文件
[root@localhost ~]# tar xf jdk1.8.tar.gz -C /usr/local/

2.配置环境变量
[root@localhost ~]# vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile

3.查看java的版本
[root@localhost ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

2.2.下载和安装RockerMQ

RockerMQ采用二进制方式安装。

1.下载RockerMQ
[root@localhost ~]# wget https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip

2.加压RockerMQ二进制包
[root@localhost ~]# unzip rocketmq-all-4.9.3-bin-release.zip -d /data/
[root@rocketmq ~]# mv /data/rocketmq-4.9.3/ /data/rocketmq
[root@rocketmq ~]# ll /data/rocketmq
总用量 40
drwxr-xr-x. 2 root root   126 2月  22 01:25 benchmark
drwxr-xr-x. 3 root root  4096 2月  22 00:25 bin
drwxr-xr-x. 7 root root   201 2月  22 00:25 conf
drwxr-xr-x. 2 root root  4096 2月  22 01:25 lib
-rw-r--r--. 1 root root 17327 2月  22 00:25 LICENSE
-rw-r--r--. 1 root root  1338 2月  22 00:25 NOTICE
-rw-r--r--. 1 root root  6069 2月  22 00:25 README.md

2.3.调整RockerMQ服务的JVM内存

RockerMQ默认给NameServer和Broker服务分配的JVM太高,我们需要进行调整。

1.修改broker服务的jvm内存
[root@rocketmq ~]# vim /data/rocketmq/bin/runbroker.sh 
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"    
#85行

2.修改NameServer的jvm内存
[root@rocketmq ~]# vim /data/rocketmq/bin/runserver.sh 
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
#72行和76行

2.4.调整RockerMQ服务日志存储路径

RockerMQ日志默认存储路径为用户家目录下的logs,我们将它调整为RockerMQ安装目录下logs。

配置文件多出都写了日志的存储路径,我们都需要修改。

image-20220312173839385

[root@rocketmq rocketmq]# vim conf/logback_namesrv.xml 
%s#${user.home}#/data/rocketmq#g

[root@rocketmq rocketmq]# vim conf/logback_tools.xml 
%s#${user.home}#/data/rocketmq#g

[root@rocketmq rocketmq]# vim conf/logback_broker.xml 
%s#${user.home}#/data/rocketmq#g

2.5.启动RockerMQ服务

2.5.1.启动RockerMQ的NameServer服务

1.启动NameServer服务
[root@rocketmq rocketmq]# nohup /data/rocketmq/bin/mqnamesrv &

2.查看启动日志
#在上一步中配置了日志存储路径,启动服务后悔发现在安装路径多了个logs目录,以后日志就会存在这里
[root@rocketmq rocketmq]# ll
总用量 44
drwxr-xr-x. 2 root root   126 2月  22 01:25 benchmark
drwxr-xr-x. 3 root root  4096 3月  12 17:36 bin
drwxr-xr-x. 7 root root   201 3月  12 17:46 conf
drwxr-xr-x. 2 root root  4096 2月  22 01:25 lib
-rw-r--r--. 1 root root 17327 2月  22 00:25 LICENSE
drwxr-xr-x. 3 root root    26 3月  12 17:48 logs
-rw-------. 1 root root   652 3月  12 17:48 nohup.out
-rw-r--r--. 1 root root  1338 2月  22 00:25 NOTICE
-rw-r--r--. 1 root root  6069 2月  22 00:25 README.md
[root@rocketmq rocketmq]# tail -f logs/rocketmqlogs/namesrv.log 

停止NameServer服务的方法

[root@rocketmq rocketmq]# /data/rocketmq/bin/mqshutdown namesrv

2.5.2.启动RockerMQ的Broker服务

1.启动Broker服务
[root@rocketmq rocketmq]# nohup /data/rocketmq/bin/mqbroker -n localhost:9876 &
#-n参数是制定NameServer
2.查看产生的日志
[root@rocketmq rocketmq]# ls /data/rocketmq/logs/rocketmqlogs/
broker_default.log  commercial.log  lock.log             namesrv.log     remoting.log  storeerror.log  transaction.log
broker.log          filter.log      namesrv_default.log  protection.log  stats.log     store.log       watermark.log

2.6.查看RockerMQ启动的进程和端口

1.查看进程
[root@rocketmq rocketmq]# ps aux | grep mq
root      64516  0.0  0.0 113176   232 pts/0    S    17:48   0:00 /bin/sh /data/rocketmq/bin/mqnamesrv
root      64520  0.0  0.0 113176   228 pts/0    S    17:48   0:00 sh /data/rocketmq/bin/runserver.sh org.apache.rocketmq.namesrv.NamesrvStartup
root      64535  0.4 11.1 2408140 110684 pts/0  Sl   17:48   0:03 /bin/java -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:-UseLargePages -cp .:/data/rocketmq/bin/../conf:/data/rocketmq/bin/../lib/*: org.apache.rocketmq.namesrv.NamesrvStartup
root      64624  0.0  0.0 113176   232 pts/0    S    17:52   0:00 /bin/sh /data/rocketmq/bin/mqbroker -n localhost:9876
root      64628  0.0  0.0 113176   256 pts/0    S    17:52   0:00 sh /data/rocketmq/bin/runbroker.sh org.apache.rocketmq.broker.BrokerStartup -n localhost:9876
root      64647  4.7 36.8 2465832 367068 pts/0  Sl   17:52   0:18 /bin/java -server -Xms256m -Xmx256m -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking -cp .:/data/rocketmq/bin/../conf:/data/rocketmq/bin/../lib/*: org.apache.rocketmq.broker.BrokerStartup -n localhost:9876

2.查看端口
[root@rocketmq rocketmq]# netstat -lnpt | grep java
tcp6       0      0 :::9876                 :::*                    LISTEN      64535/java          
tcp6       0      0 :::10909                :::*                    LISTEN      64647/java          
tcp6       0      0 :::10911                :::*                    LISTEN      64647/java          
tcp6       0      0 :::10912                :::*                    LISTEN      64647/java 

image-20220312180007231

3.使用RabbitMQ测试消息的发送和接收

3.1.发送消息

1.设置NameServer地址的环境变量,demo中会用到
[root@rocketmq ~]# export NAMESRV_ADDR=localhost:9876

2.使用自带的tools demo发生消息
[root@rocketmq ~]# /data/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

3.2.接收消息

1.设置NameServer地址的环境变量,demo中会用到
[root@rocketmq ~]# export NAMESRV_ADDR=localhost:9876

2.使用自带的tools demo发生消息
[root@rocketmq ~]# /data/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

3.3.效果展示

生产者发送消息,消费者消费消息数据。

当生产者发送完消息后,终端会退出,而消费者启动后,消费完数据也不会退出终端,而是等待生产者再次发生消息数据。

image-20220312184239949

生产者再次产生数据

猜你喜欢

转载自blog.csdn.net/weixin_44953658/article/details/131393852
今日推荐