环境准备
下载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
调整参数
首先,需要调整内存大小,以免服务无法启动(非必须)
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"
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
调整为
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"
运行命令
nohup 用来不挂断地运行命令。通常配合 & 一起使用,& 命令指定程序在后台运行 语法:nohup command [ Arg ... ] [ & ]
- 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
- 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中
- 如果没有文件能创建或打开以用于追加,那么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
测试队列
-
首先需要手工设置 NAMESRV_ADDR 的地址 export NAMESRV_ADDR=localhost:9876 -
启动生产者,并发送Topic sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer -
启动消费者,开始接收Topic sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer -
使用 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} 就可以查看到监控了
|