相关知识和概念:rocketmq.apache.org/zh/docs/
安装并启动RocketMQ
- 下载二进制包:www.apache.org/dyn/closer.…
- 启动
# 单组节点单副本模式
### 首先启动Name Server
$ nohup sh mqnamesrv &
### 验证Name Server 是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
# 验证是否成功
cat nohup.out
The Name Server boot success. serializeType=JSON
# 关闭服务
sh bin/mqshutdown namesrv
# 启动 Broker+Proxy
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
# 从配置文件启动
# nohup sh bin/mqbroker -n 127.0.0.1:9876 -c ./conf/broker.conf --enable-proxy &
### 验证Broker 是否启动成功,例如Broker的IP为:192.168.1.2,且名称为broker-a
$ tail -f ~/logs/rocketmqlogs/broker_default.log
The broker[xxx, 192.169.1.2:10911] boot success...
# 关闭服务
$ sh bin/mqshutdown broker
如果感觉启动有问题,可以去掉nohup
直接将日志打印在终端,方便查看。
启动报错:启动mqnamesrv失败,内存不足
打开runserver.sh
可以看见,内存要4G,当然不足咯,我虚拟机一共才2G
解决方案:修改为需要的内存大小。需要修改文件:runserver.sh
和 runbroker.sh
参考文章:blog.csdn.net/qq_18948359…
Xms:表示JVM Heap(堆内存)最小尺寸,初始分配空间;
Xmx:表示JVM Heap(堆内存)最大允许的尺寸,过小可能会导致java.lang.OutOfMemory
PermSize:永久代最小尺寸,初始分配
MaxPermSize:永久代最大的尺寸,过小会导致java.lang.OutOfMemoryError:PermGen space
MetaspaceSize:元空间最小尺寸,初始分配
MaxMetaspaceSize:元空间最大的尺寸
注:Java8以后,永久代被元空间取代,同时元空间不像永久代一样受制于内存,元空间是基于操作系统内存的,理论上可以一直扩展内存知道操作系统的极限。
安装并启动RocketMQ Dashboard
RocketMQ Dashboard 是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。
docker启动
# 拉取镜像
$ docker pull apacherocketmq/rocketmq-dashboard:latest
# 创建容器并启动
$ docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号。
开放端口号:8080,9876,10911,11011 端口
- 云服务器:设置安全组访问规则
- 本地虚拟机:关闭防火墙,或 -add-port
源码启动
M1直接启动不行,所以从源码启动试试。
源码地址:apache/rocketmq-dashboard
下载并解压,切换至源码目录 rocketmq-dashboard-master/
-
先修改配置
src/main/resources/application.properties
-
编译 rocketmq-dashboard
$ mvn clean package -Dmaven.test.skip=true
- 运行 rocketmq-dashboard
$ java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
使用报错:RocketMQ控制台手动新增主题,报错:clusterName or brokerName can not be all blank
几经排查,发现/logs/rocketmqlogs/broker.log
有报错信息,
2023-02-14 11:23:46 ERROR BrokerControllerScheduledThread1 - ScheduledTask refresh metadata exception
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:473)
at org.apache.rocketmq.broker.out.BrokerOuterAPI.getBrokerClusterInfo(BrokerOuterAPI.java:1052)
at org.apache.rocketmq.broker.out.BrokerOuterAPI.refreshMetadata(BrokerOuterAPI.java:1071)
at org.apache.rocketmq.broker.BrokerController$11.run(BrokerController.java:676)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
最后发现是原来是官方的启动文件有问题。导致broker启动时没有加载到启动参数。修改启动文件bin/mqbroker
,将[[
修改为[
。去掉一个冒号。
参考文章:
blog.csdn.net/qq_37436987…
rocketmq.apache.org/zh/docs/qui…