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

news2025/1/24 22:28:12

RocketMQ

  • 01 下载RocketMQ
  • 02 安装RocketMQ
  • 03 启动RocketMQ
    • 1. 内存分配
      • 1.1 第一步
      • 1.2 第二步
      • 1.3 第三步
    • 2. 启动RocketMQ
      • 2.1 启动NameServer
      • 2.2 启动Broker
  • 04 测试RocketMQ
  • 05 关闭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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#调用C++的动态链接库

C#调用C的动态链接库 问题所在使用VS编辑所需要调用的函数(c)创建c#项目,调用c动态库 这是一个测试代码。 问题所在 c# 调用c的dll库不能引用 解决办法是 1:在写c代码的时候,把他加入到dll中 2:将c的dll库…

Selenium自动化测试框架工作原理你明白了吗?

一、Selenium是什么? 用官网的一句话来讲:Selenium automates browsers. Thats it!简单来讲,Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的…

零基础学网络安全的心得

我的学习心得,我认为能不能自学成功的要素有两点。 第一点就是自身的问题,虽然想要转行学习安全的人很多,但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习安全,这是完全不可能的。 所以能不能学成并…

神经网络:卷积的padding为SAME或VALID

1:卷积运算原理(直接看图) ①由图可知,output[0][0] 视野域 * 卷积核(矩阵点击运算,对应位相乘然后求和,视野域形状与卷积核一致),而output[0][1] 下一视野域 * 卷积核…

软件测试的案例分析 - 闰年4.1

文章目的 显示不同的博客能获得多少博客质量分 (这是关于博客质量分的测试 https://www.csdn.net/qc) 这个博客得了 60 分。 希望获得 70 分左右 正文 我们谈了不少测试的名词, 软件是人写的, 测试计划和测试用例也是人写的, 人总会犯错误。错误发生之后, 总有人…

docker安装rabbitmq以及rabbitmq_management、rabbitmqctl管理工具

💧 d o c k e r 安装 r a b b i t m q 以及 r a b b i t m q m a n a g e m e n t 、 r a b b i t m q c t l 管理工具 \color{#FF1493}{docker安装rabbitmq以及rabbitmq_management、rabbitmqctl管理工具} docker安装rabbitmq以及rabbitmqm​anagement、rabbitmqct…

[Eigen中文文档] 稠密矩阵分解函数对比

文档总目录 英文原文(Benchmark of dense decompositions) 本页介绍了 Eigen 为各种方阵和过约束问题提供的稠密矩阵分解的速度比较。 有关线性求解器、分解的特征和数值鲁棒性的更一般概述,请查看 此表。 该基准测试已在配备英特尔酷睿 i7 2.6 GHz 的笔记本电…

HIVE获取json字段特定值(单个json或者json数组)

1.获取单个json字符串里的某一特定值 函数:get_json_object(单个json,‘$.要获取的字段’) 示例: 代码:SELECT get_json_object(‘{“NAME”:“张三”,“ID”:“1”}’,‘$.NAME’) as name; SELECT get_json_object(‘{“NAME”:“张三”…

【 Python 全栈开发 - WEB开发篇 - 31 】where条件查询

文章目录 一、where条件查询1.关系运算符查询2.IN关键字查询3.BETWEEN AND关键字查询4.空值查询5.AND关键字查询6.OR关键字查询7.LIKE关键字查询普通字符串含有%通配的字符串含有_通配的字符串 一、where条件查询 MySQL 的 where 条件查询是指在查询数据时,通过 wh…

golang gocv 0.32版本windows安装 opencv4.7 依赖

准备工作: 修改Host 185.199.108.133 raw.githubusercontent.com 185.199.109.133 raw.githubusercontent.com 185.199.110.133 raw.githubusercontent.com 185.199.111.133 raw.githubusercontent.com 140.82.114.3 github.com 安装cmake与MinGW-W64 cmake下载地址…

Nacos架构与原理 - 寻址机制

文章目录 前提设计MemberLookup内部实现单机寻址 StandaloneMemberLookup文件寻址 FileConfigMemberLookup地址服务器寻址 AddressServerMemberLookup 未来可扩展点 前提 Nacos 支持单机部署以及集群部署 针对单机模式,Nacos 只是自己和自己通信;对于集…

Hbase---hfile

逻辑数据组织格式 Scanned block section:表示顺序扫描HFile时(包含所有需要被读取的数据)所有的数据块将会被读取,包括Leaf Index Block和Bloom Block;Non-scanned block section:HFile顺序扫描的时候该…

list容器会了吗?一文搞定它

这里写目录标题 list 数据链式存储大小操作插入操作list数据存取list容器的反转和排序 list 数据链式存储 list的优点 1.采用动态存储分配,不会造成内存浪费和溢出 2.链表执行插入和删除操作十分简单,修改指针即可,不需要移动大量元素 缺点…

低代码开发与数智制造:数字转型的无缝结合

随着工业4.0的到来,数智制造已经成为制造业发展的趋势,而低代码开发技术则是近几年兴起的一种轻量级开发方式,这两者之间的结合将为制造业的数字化转型打下坚实的基础。 低代码开发平台有什么特点? 首先让我们来厘清一下&#xff…

STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇

STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇,板载有DS18B20和TM16504位数码管。 项目简介 单片机课课程设计,要做一个智能温控风扇,达到设定的下限温度值就开启风扇,温度在上限和下限之间就按比例输出PWM占空比控制…

基于jsp+mysql+Spring+mybatis的Springboot旅游网站管理系统

运行环境: 最好是java jdk 1.8,我在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以,如果编译器的版本太低,需要升级下编译器,不要弄太低的版本 tomcat服务器环…

AI回答:绩效考核有哪些方法,基本靠谱

AI回答:绩效考核有哪些方法,基本靠谱 建立有效的绩效考核机制,比较难 但没有考核机制,就无法评价优劣 趣讲大白话:赏罚两字,千古大事 【趣讲信息科技191期】 **************************** 互联网企业现在流…

11 GMM——高斯混合模型

文章目录 11 GMM——高斯混合模型11.1 模型介绍11.2 通过MLE估计参数11.3 EM求解 11 GMM——高斯混合模型 11.1 模型介绍 从几何角度来说: 高斯混合模型表示:加权平均——由多个高斯分布混合叠加而成,如图 公式可以表达为: p…

【Jmeter】提取和引用Token

1.执行获取token接口 在结果树这里,使用$符号提取token值。 $根节点,$.data.token表示提取根节点下的data节点下的token节点的值。 2.使用json提取器,提取token 变量路径就是把在结果树提取的路径写上。 3.使用BeanShell取样器或者BeanShell后…

(数组) 941. 有效的山脉数组 ——【Leetcode每日一题】

❓941. 有效的山脉数组 难度:简单 给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false。 让我们回顾一下,如果 arr 满足下述条件,那么它是一个山脉数组: arr.length > 3在 0 &…