RocketMQ下载:
本文档选择5.3.0版本的“Binary 下载”,上传至服务器并解压。说明:本文档仅介绍RocketMQ的简单部署,未涉及集群和分布式的部署,其中 NameServer 和 Broker 安装在同一台服务器上。
一、环境设置
JDK环境
服务器需要提前安装好Java环境,测试环境JDK版本为1.8.0。
JVM参数调整
根据机器配置,调整JVM的-Xms、-Xmx以及-Xmn参数大小。
JVM参数说明:-Xms参数用于设置Java堆内存的初始大小;-Xmx参数用于设置Java堆内存的最大大小;-Xmn参数允许指定年轻代的大小。
修改 JVM 参数方式:
# 在bin目录下的 runserver.sh 中进行修改
vim bin/runserver.sh
# 在bin目录下的 runbroker.sh 中进行修改
vim bin/runbroker.sh
(1)在 runserver.sh 以下部分中修改:
choose_gc_options()
{
# Example of JAVA_MAJOR_VERSION value : '1', '9', '10', '11', ...
# '1' means releases before Java 9
JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F '.' '{print $1}')
if [ -z "$JAVA_MAJOR_VERSION" ] || [ "$JAVA_MAJOR_VERSION" -lt "9" ] ; then
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
else
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M"
fi
}
由于测试环境的JDK版本为1.8,低于9版本,则需要在第7行处修改JVM参数值;若JDK版本高于9版本,需在第12行处修改。测试环境中调整 JVM 参数为 -Xms1g -Xmx1g -Xmn512m
。
(2)在 runbroker.sh 以下部分中修改:
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
测试环境中调整 JVM 参数为 -Xms1g -Xmx1g
。
二、启动服务
启动顺序:先启动 NameServer,再启动 Broker。
启动NameServer
### 启动namesrv
$ nohup sh bin/mqnamesrv &
Tips:使用nohup命令可以在Linux下永久地在后台执行程序,不受终端关闭的影响。nohup 命令,在默认情况下(非重定向时),会将日志输出到一个名叫 nohup.out的文件中,而不是显示在控制台上。
启动成功后 nohup.out 记录的日志输出:
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
启动Broker
NameServer成功启动后,再启动Broker。在启动Broker时,需要指定NameServer的地址。可以在启动命令中传入NameServer地址(eg. localhost:9876),也可在shell环境变量中配置NameServer地址。
方式1:启动命令中传参
### 启动broker
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
方式2:配置环境变量后启动
# 编辑bash_profile文件
vim ~/.bash_profile
# 在其中添加一行内容
export NAMESRV_ADDR='localhost:9876'
# 重新加载设置,使更改生效
source ~/.bash_profile
启动broker:
nohup sh bin/mqbroker &
nohup.out 文件中出现以下语句,则Broker启动成功。
The broker[xxx-xxx-xxx-xxx, xxx.xxx.xxx.xxx:10911] boot success. serializeType=JSON and name server is localhost:9876
查看状态
使用 jps 命令查看所有正常运行的java进程,查看进程中是否存在NameServer和Broker。
[root@xxx-xxx-xxx-xxx rocketmq-5.3.0]# jps
74181 Jps
73877 NamesrvStartup
74027 BrokerStartup
重启Broker
sh bin/mqshutdown broker
三、运行示例
生产消息
[root@xxx-xxx-xxx-xxx rocketmq-5.3.0]# bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
消费消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
执行过程中,若出现无权限的错误,运行以下命令修改权限,递归地修改目录及其所有子文件和子目录的权限:
chmod -R 755 /opt/rocketmq-5.3.0
四、Dashboard安装部署
部署
从官网下载Dashboard源码,下载链接:Dashboard 2.0.0
修改项目中application.yml文件中的如下内容,修改Dashboard访问端口为8088,配置NameServer的ip和端口:
server:
port: 8088
rocketmq:
config:
namesrvAddrs:
- 127.0.0.1:9876 # 修改为真实地址
使用IEDA打开项目文件,注意修改IDEA“项目结构”中的“SDK”为1.8版本。
通过如下命令打包,在target目录下生成 rocketmq-dashboard-2.0.0.jar。
mvn clean package -Dmaven.test.skip=true
将打包后的jar包传入服务器后,通过如下命令启动:
java -jar rocketmq-dashboard-2.0.0.jar
验证
访问启动服务的地址的8088端口,进入可视化页面。
Dashboard 使用介绍见博客。