安装介绍
- Centos 7
- RocketMQ 4.7
- JDK 1.8 (安装JDK参考)
- RocketMQ的官网地址: http://rocketmq.apache.org
- Github地址是 https://github.com/apach e/rocketmq
安装操作
下载RocketMQ
RocketMQ运行版本下载地址: Rocketmq-all-4.7.1-bin-release.zip
RocketMQ源码版本下载地址: https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.7.1/r ocketmq-all-4.7.1-source-release.zip
这两个版本我们都下载下来。
安装RocketMQ
1、创建用户及目录,创建一个操作用户用来运行自己的程序,与root用户区分开。
#设置用户密码
[root@worker1 ~]# useradd app
[root@worker1 ~]# passwd app
#创建目录,并更改用户及用户组
[root@worker1 ~]# mkdir /home/app
[root@worker1 ~]# chown oper:oper /home/app
2、解压文件,进入到rocketmq目录,没有的话创建一下。
su app #切换用户
cd /home/app #切换目录
mkdir rocketmq #创建目录
tar -zxvf rocketmq-all-4.7.1-bin-release.zip #解压文件
3、配制环境变量,完成安装
1、把rocketmq的bin目录也配置到环境变量当中
执行命令:vi ~/.bash_profileexport JAVA_HOME=/app/jdk1.8/export ROCKETMQ_HOME=/home/app/rocketmq/rocketmq-all-4.7.1-bin-releasePATH=$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/binexport PATH
处理添加ROCKETMQ_HOME 并修改 PATH
2、退出编辑,并执行source ~/.bash_profile让环境变量生效
启动RocketMQ
RocketMQ由以下这几个组件组成,所以我们要启动RocketMQ服务,需要先启动NameServer。
- NameServer : 提供轻量级的Broker路由服务。
- Broker:实际处理消息存储、转发等服务的核心组件。
- Producer:消息生产者集群。通常是业务系统中的一个功能模块。
- Consumer:消息消费者集群。通常也是业务系统中的一个功能模块。
1、修改NameServer服务的启动内存,再启动
RocketMQ默认预设的JVM内存是4G,这是RocketMQ给我们的最佳配置,修改的方式是直接修改
bin/runserver.sh。 用vi runserver.sh编辑这个脚本修改为如下:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m
XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"然后我们用静默启动的方式启动NameServer服务
nohup bin/mqnamesrv &
2、启动broker,Broker的默认预设内存是8G,也需要调整再启动(先确认namesrv启动完,再执行)
bin目录下 vi runbroker.sh,找到这一行,内存调整如下:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"找到conf/broker.conf, vi指令进行编辑,在最下面加入一个配置
autoCreateTopicEnable=true然后也以静默启动的方式启动runbroker.sh
nohup ./mqbroker &## 这个方式启动,可以在mq的管理console界面上看到集群信息
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &
3、校验broker是否连上namesrv
执行命令:sh mqadmin clusterList -n localhost:9876 如果看到下图所示,则代表连接成功
mq的管理console界面上看到集群信息
验证RocketMQ
在RocketMQ的安装包中,提供了一个tools.sh工具可以用来在命令行快速验证RocketMQ服务。
首先需要配置一个环境变量NAMESRV_ADDR指向我们启动的NameServer服务。
- 执行命令:export NAMESRV_ADDR='localhost:9876'
启动消息生产者发送消息:默认会发1000条消息
- 执行命令:bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
启动消息消费者接收消息
- 执行命令:bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
注意:如果在发送消息时报如下错
org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
可以尝试通过这些操作试一下
修改tools.sh的内存
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn64m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
配置tools.sh
的"Djava.ext.dirs",添加jvm的ext绝对路径,在最后加上
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/usr/lib/jvm/java-1.8.0-openjdk/jre/lib/ext"
关闭RocketMQ
要关闭RocketMQ服务可以通过mqshutdown脚本直接关闭
# 1.关闭NameServer
sh bin/mqshutdown namesrv
# 2.关闭Broker
sh bin/mqshutdown broker