环境准备

下载virtualbox和centos镜像,启动虚拟机,加载系统(略,默认用户名root)

确保centos系统已经安装了java和maven环境

sudo yum install java-11-openjdk.x86_64
sudo yum install maven

下载RocketMQ

进入RocketMQ的下载界面 https://rocketmq.apache.org/release_notes/
在这里插入图片描述
下载RocketMQ

  • 源码文件(需要使用Maven工具重新编译)
  • 编译后的二进制文件
    在这里插入图片描述

使用Putty连接虚拟机

由于使用的是virtualbox,无法安装增强工具,也无法从主机复制链接进去,因此只能使用putty的方式

首先,配置虚拟机网卡。选择网卡1(默认是 NAT),点击 “端口转发”
在这里插入图片描述
10.0.2.15 基本是 NAT 模式固定的IP。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

下载RocketMQ

我这里直接下载编译好的二进制。如果下载的是源码,解压后需要执行mvn -Prelease-all -DskipTests clean install -U 进行编译

使用 wget 将文件下载到当前目录 wget https://dlcdn.apache.org/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip
在这里插入图片描述
使用 unzip 命令进行解压 unzip rocketmq-all-4.9.2-bin-release.zip -d <解压到哪个目录>
在这里插入图片描述
解压后的目录结构如下

rocketmq-4.9.2

  • benchmark
  • bin
  • conf
  • lib
  • LICENSE
  • NOTICE
  • README.md
    在这里插入图片描述

调整参数

首先,需要调整内存大小,以免服务无法启动(非必须)

  • bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
调整为
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  • bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
调整为
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"

运行命令

nohup 用来不挂断地运行命令。通常配合 & 一起使用,& 命令指定程序在后台运行
语法:nohup command [ Arg ... ] [ & ]

  1. 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
  2. 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中
  3. 如果没有文件能创建或打开以用于追加,那么Command参数指定的命令不可调用

退出返回值:

  • 126 可以查找单不能调用 Command 参数指定的命令
  • 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令
  • 否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态

启动 NameServer

mkdir logs
touch logs/namesrv.log
nohup sh bin/mqnamesrv > logs/namesrv.log &

启动 broker

mkdir logs
touch logs/broker.log
nohup sh bin/mqbroker > logs/broker.log &

在这里插入图片描述

查看启动是否成功

  • jps
    在这里插入图片描述

  • 查看日志

cat logs/namesrv.log
cat logs/broker.log

在这里插入图片描述

停止 namesrv 和 broker

  • 停止 broker bin/mqshutdown broker
  • 停止 namesrv bin/mqshutdown namesrv

状态查看命令

  • 查看集群情况 bin/mqadmin clusterList -n 127.0.0.1:9876
    在这里插入图片描述
  • 查看broker状态 bin/mqadmin brokerStatus -n 127.0.0.1:9876 -b <broker IP>:10911
    在这里插入图片描述
  • 查看topic列表 bin/mqadmin topicList -n 127.0.0.1:9876
    在这里插入图片描述
  • 查看topic状态 bin/mqadmin topicStatus -n 127.0.0.1:9876 -t SELF_TEST_TOPIC
    在这里插入图片描述
  • 查看topic路由 bin/mqadmin topicRoute -n 127.0.0.1:9876 -t SELF_TEST_TOPIC
    在这里插入图片描述

测试队列

  1. 首先需要手工设置 NAMESRV_ADDR 的地址 export NAMESRV_ADDR=localhost:9876

  2. 启动生产者,并发送Topic sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    在这里插入图片描述

  3. 启动消费者,开始接收Topic sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
    在这里插入图片描述

  4. 使用 jps 查看当前所有Java进程
    在这里插入图片描述

排错

名服务器

这个错误是由于未设置名服务器导致的
java.lang.IllegalStateException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
在这里插入图片描述
解决方案:
设置名服务器:export NAMESRV_ADDR=localhost:9876

无法创建Topic

Broker默认禁止自动创建Topic,可以添加 autoCreateTopicEnable=true 来允许自动创建话题
org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest

解决方案:

bin/mqshutdown broker
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true > logs/broker.log &

无法计算签名

这个是由于yum安装的java,没有指明 ${JAVA_HOME} 的位置。可以使用 echo ${JAVA_HOME} 命令进行查看,如果为空,则说明该变量未被设置。
Caused by: 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
在这里插入图片描述
解决方案:
设置JAVA_HOME环境变量 export JAVA_HOME=/usr/lib/jvm/java-openjdk
在这里插入图片描述

可视化工具

之前的版本叫 rocketmq-console,后来项目从 rocket-externals 中独立了出来,重命名为 rocketmq-dashboard

github 地址为 https://github.com/apache/rocketmq-dashboard

下载后使用 mvn clean package -Dmaven.test.skip=true 进行编译

然后对生成的jar包,使用 java -jar 命令进行启动

打开RocketMQ监控中心网站:http://{ip}:{port} 就可以查看到监控了

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐