安装RocketMQ
3.1.安装前需要准备一个CentOS7的Linux机器,使用的Linux版本如下:
[root@localhost bin]# uname -a
3.2.安装JDK
推荐使用JDK1.8版本。可以使用课件资料包或者自行下载tar.gz包。
1.统一规划目录,创建app文件夹,在创建jdk文件夹,将jdk的包上载到 /app/jdk目录下然后解压
[root@localhost /]# cd ..
[root@localhost /]# mkdir app
[root@localhost /]# cd app/
[root@localhost app]# mkdir jdk
[root@localhost app]# cd jdk/
[root@localhost jdk]# tar -zxvf jdk-8u171-linux-x64.tar.gz
2.配置jdk环境变量,将JAVA_HOME变量加上;将path路径替换成相应配置
[root@localhost jdk]# vi /etc/profile
#jdk解压后的目录路径
export JAVA_HOME=/app/jdk/jdk1.8.0_171/
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
3.更新配置并查看jdk版本,显示以下信息则安装成功。
[root@localhost jdk]# source /etc/profile
[root@localhost jdk]# java -version
3.3.安装RocketMQ
3.3.1.将安装包上载到 /app/rocketMQ目录下
#先在app目录下创建rocketMQ文件夹
[root@localhost jdk]# cd ..
[root@localhost app]# mkdir rocketMQ
#将bin上载到/app/rocketMQ目录然后解压(也可以先解压在上载,推荐先上载后解压)
[root@localhost app]# cd rocketMQ/
[root@localhost rocketMQ]# unzip rocketmq-all-5.1.0-bin-release.zip
3.3.2.配置rocketMQ环境变量
#将ROCKETMQ_HOME变量加上,在path路径加上$ROCKETMQ_HOME/bin:
[root@localhost rocketMQ]# vi /etc/profile
#rocketMQ路径
export ROCKETMQ_HOME=/app/rocketMQ/rocketmq-all-5.1.0-bin-release
export PATH=$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
#namesrv后续broker会使用到,先加上
export NAMESRV_ADDR='worker1:9876;worker2:9876;worker3:9876'
3.3.3.更新配置
[root@localhost rocketMQ]# source /etc/profile
ROCKETMQ_HOME的环境变量是必须要单独配置的,如果不配置的话,启动NameSever和Broker都会报错。这个环境变量的作用是用来加载$ROCKETMQ_HOME/conf下的除broker.conf以外的几个配置文件。所以实际情况中,可以不按这个配置,但是一定要能找到配置文件。这样RocketMQ就安装完成了。
3.4.RocketMQ工作原理
官网5.0版本速览链接:https://rocketmq.apache.org/zh/version/
RocketMQ5.0 引入了全新的弹性无状态代理模式,将当前的Broker职责进行拆分,对于客户端协议适配、权限管理、消费管理等计算逻辑进行抽离,独立无状态的代理角色提供服务,Broker则继续专注于存储能力的持续优化。值得注意的是RocketMQ 5.0的全新模式是和4.0的极简架构模式相容相通的,5.0的代理架构完全可以以Local模式运行,实现与4.0架构完全一致的效果。开发者可以根据自身的业务场景自由选择架构部署,本教程也是部署的Local模式。
RocketMQ启动流程如下:
-
-
- 启动NameServer
- 启动Broker
-
3.5.NameServer服务搭建
启动NameServer非常简单,在$ROCKETMQ_HOME/bin目录下有个mqnamesrv。直接执行这个脚本就可以启动RocketMQ的NameServer服务。
由于RocketMQ默认预设的JVM内存是4G,这是RocketMQ给我们的最佳配置。但是通常我们用虚拟机的话都是不够4G内存的,所以需要调整下JVM内存
大小。修改的方式是直接修改runserver.sh。
3.5.1.修改NameServer启动配置
[root@localhost rocketMQ]# cd rocketmq-all-5.1.0-bin-release/bin/
[root@localhost bin]# vi runserver.sh
#将JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g 修改为 -server -Xms512m -Xmx512m -Xmn256m
3.5.2.启动NameServer
NameServer的配置修改完成,然后我们用静默启动的方式启动NameServer服务,启动完成后在nohup.out里看到这一条关键日志就是启动成功。并且使用jps指令可以看到有一个NamesrvStartup进程。
#静默启动
[root@localhost bin]# nohup ./mqnamesrv &
#查看日志
[root@localhost bin]# tail -f nohup.out
3.6.Broker服务搭建
启动Broker的脚本是runbroker.sh。Broker的默认预设内存是8G,启动前,如果内存不够,同样需要调整下JVM内存。修改的方式是直接修改runbroker.sh。
3.6.1.修改broker启动脚本配置
[root@localhost bin]# vi runbroker.sh
#将JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g" 修改为 JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m"
3.6.2.修改broker配置文件
#修改broker资源配置文件,允许自动创建Topic
[root@localhost bin]# cd ../conf/
[root@localhost conf]# vi broker.conf
#允许自动创建topic
autoCreateTopicEnable=true
#添加nameserver地址
namesrvAddr=localhost:9876
3.6.3.启动broker服务
Broker的配置修改完成,然后我们用静默启动的方式启动Broker服务,同样是检查nohup.out日志, 并且jps指令可以看到一个BrokerStartup进程。
1.回到bin目录下,静默启动broker
[root@localhost conf]# cd ../bin
[root@localhost bin]# nohup ./mqbroker -c ../conf/broker.conf &
2.查看日志,显示如下即显示成功*********每次启动broker时都要关注是否注册到目标nameserver上(name server is worker1:9876)
[root@localhost bin]# tail -f nohup.out
[root@localhost bin]# jps
3.7.测试RocketMQ消息发送与消费
在RocketMQ的安装包中,提供了一个tools.sh工具可以用来在命令行快速验证RocketMQ服务。
1.我们在bin录下执行以下命令测试消息发送,默认会发1000条消息,发送完成自动关闭
[root@localhost bin]# export NAMESRV_ADDR='localhost:9876'
[root@localhost bin]# ./tools.sh org.apache.rocketmq.example.quickstart.Producer
2.出现以下提示则代表消息发送成功
3.执行以下命令测试消息接收,Consumer执行不会自动关闭,会一直挂起等待新消息过来;
[root@localhost bin]# export NAMESRV_ADDR='localhost:9876'
[root@localhost bin]# ./tools.sh org.apache.rocketmq.example.quickstart.Consumer
4.出现以下提示则代表消息接收成功
3.8.关闭RocketMQ服务
在bin目录下通过脚本关闭服务:
1.关闭Broker
sh ./mqshutdown broker
2.关闭NameServer
sh ./mqshutdown namesrv
3.查看服务
至此RockMQ单机测试成功,接下来搭建集群。