springcloud-alibaba (06)RocketMQ下载安装和单机启动个人笔记

01 下载RocketMQ

下载 RocketMQ 即可以从 Apache 官网下载,也可以从 gitHub 上进行下载,无论哪种方式,下载解压后都是一样的。

官网下载地址:https://rocketmq.apache.org/release-notes/2023/03/26/4.9.5点我直达

在这里插入图片描述

02 安装RocketMQ

进入官网后选择自己需要的版本进行下载,将下载完的 rocketmq-all-4.9.5-bin-release.zip 包上传至服务器或虚拟机

解压命令:

unzip rocketmq-all-4.9.5-bin-release.zip

在这里插入图片描述

03 启动RocketMQ

1. 内存分配

服务器上启动RocketMQ时,如果分配的内存过大,可能会导致系统资源消耗过多,从而降低服务器的性能和稳定性。因此,建议将Java虚拟机启动参数调整为适当的值,以避免消耗过多的系统资源。

修改bin目录 下的 3 个配置文件:(不然会报insufficient memory)

  • runserver.sh
  • runbroker.sh
  • tools.sh

路径:/rocketMQ/rocketmq-all-4.9.5-bin-release/bin/

1.1 第一步

修改runserver.sh文件:

vim runserver.sh	

将以下行:

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改为:

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

在这里插入图片描述

这将把Java堆大小限制在1GB以内

1.2 第二步

修改runbroker.sh文件:

vim runbroker.sh

将以下行:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"

修改为:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn128m"

在这里插入图片描述

这样可以避免JVM占用过多的系统资源,从而提高服务器的稳定性和性能

1.3 第三步

修改tools.sh文件:

vim tools.sh

将以下行:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

修改为:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=64m"

在这里插入图片描述

最后开启自动动创建Topic功能
在conf/broker.conf⽂件中加⼊如下配置,开启自动动创建Topic功能。

autoCreateTopicEnable=true

在这里插入图片描述

这些启动脚本中的Java虚拟机启动参数是为了在不同的场景下最大化利用系统资源,并确保RocketMQ的稳定性和性能。

在runserver.sh文件中,Java堆的最小值为512MB,最大值为1GB,新生代大小为256MB,Metaspace大小为128MB,最大Metaspace大小为320MB。这个设置适用于启动RocketMQ的NameServer服务,因为NameServer服务需要处理大量的元数据,因此需要分配更多的内存空间。

在runbroker.sh文件中,Java堆的最小值为256MB,最大值为512MB,新生代大小为128MB。这个设置适用于启动RocketMQ的Broker服务,因为Broker服务需要处理大量的消息,但是元数据的处理相对较少,因此需要分配较少的内存空间。

在tools.sh文件中,Java堆的最小值为256MB,最大值为512MB,新生代大小为128MB,Metaspace大小为64MB,最大Metaspace大小为64MB。这个设置适用于启动RocketMQ的工具,例如消息生产者和消费者,因为这些工具需要处理相对较少的数据,因此需要分配较少的内存空间。

总体来说,这些Java虚拟机启动参数是为了在不同的场景下最大化利用系统资源,并确保RocketMQ的稳定性和性能。如果您在使用RocketMQ时遇到了性能或稳定性问题,可以考虑根据实际情况调整这些参数。

2. 启动RocketMQ

2.1 启动NameServer

在这里插入图片描述

(1)在bin目录下创建一个日志目录

mkdir logs

(2)启动NameServer

nohup ./mqnamesrv > logs/mqnamesrv.out 2>1 &

这个命令的作用是在后台运行mqnamesrv进程,并将进程的标准输出和标准错误输出重定向到logs/mqnamesrv.out文件中。

(3)查看日志

查看启动状态,运行以下代码等两三秒就会显示succeed

tail -f logs/mqnamesrv.out

看到The Name Server boot success. serializeType=JSON表示启动成功。

在这里插入图片描述

tail -f logs/mqnamesrv.out 是一个Linux命令,用于实时监控文件内容的变化。其中 -f 参数表示实时跟踪文件中新增的内容。

可能需要等待5秒左右,是因为在 nohup ./mqnamesrv > logs/mqnamesrv.out 2>1 & 命令执行后,mqnamesrv 进程需要一些时间来启动并输出日志信息到 logs/mqnamesrv.out 文件中。如果在 logs/mqnamesrv.out 文件中没有新的内容,tail -f logs/mqnamesrv.out 命令就不会输出任何内容。

因此,等待一些时间后再执行 tail -f logs/mqnamesrv.out 命令,就可以确保 mqnamesrv 进程已经启动并开始输出日志信息,从而能够实时跟踪文件内容的变化。

2.2 启动Broker

同样进入 RocketMQ 安装目录下的 /bin目录进行操作。

(1)启动Broker

  • 启动命令,注意:ip地址要配置成为服务的ip地址,保证地址以及端口能够访问
  • nohup ./mqbroker -n 192.168.157.130:9876 & :属于后台以静默⽅式启动
  • sh ./mqbroker -n 192.168.157.130:9876 :属于终端启动,直接输出日志信息,按 ctrl+c 可直接关闭退出

启动命令:

nohup ./mqbroker -n 192.168.157.130:9876 > logs/mqbroker.out 2>1 &

(2)查看日志

查看启动状态,启动之后同样提示将日志信息追加到了当前目录下的nohup.out文件中。

tail -f logs/mqbroker.out

看到以下表示启动成功

The broker[linux1, 192.168.109.149:10911] boot success. serializeType=JSON and name server is 192.168.109.149:9876

在这里插入图片描述

因为 mqbroker 进程需要一些时间来启动并输出日志信息到 logs/mqbroker.out 文件中。如果在 logs/mqbroker.out 文件中没有新的内容,tail -f logs/mqbroker.out 命令就不会输出任何内容。

可以尝试等待一段时间后再次查看日志,或者检查 mqbroker 进程是否已经成功启动。可以使用 ps -ef | grep mqbroker 命令来查看当前系统中是否有 mqbroker 进程正在运行,如果有的话,说明 mqbroker 进程已经成功启动。如果没有,则需要检查启动命令是否正确,或者检查启动过程中是否出现了错误。

(3)日志一直没反应

解决查看日志没反应:删除store里面的全部内容

#删除/root/store/*
cd /root/store
rm -rf *

# 重新启动broker
nohup ./mqbroker -n 192.168.157.130:9876 > logs/mqbroker.out 2>1 &

04 测试RocketMQ

发送/接收消息之前,需要告诉客户端(Producer、Consumer)名称服务器的位置,RocketMQ 提供了多种方法来实现这一点.

编程方式,如:producer.setNamesrvAddr(“ip:port”)
Java 选项,如:rocketmq.namesrv.addr
环境变量,如:NAMESRV_ADDR
HTTP 端点

  1. 测试消息发送
[root@linux1 rocketmq]# export NAMESRV_ADDR=localhost:9876
[root@linux1 rocketmq]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
OpenJDK 64-Bit Server VM warning: MaxNewSize (262144k) is equal to or greater than the entire heap (262144k).  A new max generation size of 261632k will be used.
16:19:05.806 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
SendResult [sendStatus=SEND_OK, msgId=AC11000176396FF3C5B512F379FA0000, offsetMsgId=AC11000100002A9F0000000000000000, messageQueue=MessageQueue [topic=TopicTest, brokerName=linux1, queueId=3], queueOffset=0]
......
SendResult [sendStatus=SEND_OK, msgId=AC11000176396FF3C5B512F382B603E7, offsetMsgId=AC11000100002A9F00000000000317BF, messageQueue=MessageQueue [topic=TopicTest, brokerName=linux1, queueId=2], queueOffset=249]
16:19:08.609 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[172.17.0.1:10911] result: true
16:19:08.631 [NettyClientSelector_1] INFO  RocketmqRemoting - closeChannel: close the connection to remote address[127.0.0.1:9876] result: true
  1. 测试消息接收
[root@linux1 rocketmq]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
OpenJDK 64-Bit Server VM warning: MaxNewSize (262144k) is equal to or greater than the entire heap (262144k).  A new max generation size of 261632k will be used.
16:21:15.395 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
Consumer Started.
ConsumeMessageThread_3 Receive New Messages: [MessageExt [brokerName=linux1, queueId=2, storeSize=201, queueOffset=1, sysFlag=0, bornTimestamp=1659601146477, bornHost=/192.168.0.101:48216, storeTimestamp=1659601146478, storeHost=/172.17.0.1:10911, msgId=AC11000100002A9F000000000000057F, commitLogOffset=1407, bodyCRC=988340972, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1659601275866, UNIQ_KEY=AC11000176396FF3C5B512F37A6D0007, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 55], transactionId='null'}]] 
ConsumeMessageThread_4 Receive New Messages: [MessageExt [brokerName=linux1, queueId=2, storeSize=202, queueOffset=2, sysFlag=0, bornTimestamp=1659601146500, bornHost=/192.168.0.101:48216, storeTimestamp=1659601146501, storeHost=/172.17.0.1:10911, msgId=AC11000100002A9F00000000000008A4, commitLogOffset=2212, bodyCRC=2088767104, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1659601275867, UNIQ_KEY=AC11000176396FF3C5B512F37A84000B, CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 49], transactionId='null'}]] 

05 关闭RocketMQ

与启动顺序相反进行关闭,先关闭 broker、在关闭 nameserv

./mqshutdown broker
./mqshutdown namesrv

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bilal-abdurehim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值