rocketmq学习笔记(一)安装部署

初次使用rocketmq,记录一下全流程步骤。

1、下载安装包

首先在官网,下载安装包,可也根据官方文档进行部署,但有一些细节没说明,可能会有坑,本文会尽量详细的描述每个步骤,把我踩过的坑填补上。

下载完安装包后,解压到服务器指定目录下,我这里下载的是二进制包,解压放在/usr/local/rocketmq-all-5.2.0-bin-release。

2、配置环境变量(不配也行,这步是为了执行命令方便)

找到文件/etc/profile

文件末尾追加:

export ROCKETMQ_HOME=/usr/local/rocketmq-all-5.2.0-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin

执行命令,让环境变量立即生效

source /etc/profile
3、修改防火墙设置

rocketmq的通信会用到多个端口, 为了方便测试,我们关闭防火墙:

# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 查看防火墙状态
firewall-cmd --state
4、修改rocketmq默认jvm内存配置

rocketmq默认jvm内存配置过大,会导致启动失败或运行异常,在安装目录下的bin目录里,找到runserver.sh文件,搜索“JAVA_OPT="${JAVA_OPT} -server”,修改前:

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

修改后:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

还有runbroker.sh文件,修改前:

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

修改后:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"
5、配置broker.conf文件

新增brokerIP1,namesrvAddr

#当前 broker 监听的 IP,默认值 网卡的 InetAddress	
brokerIP1=192.168.210.100
#name server服务器地址及端口,可以是多个,分号隔开
namesrvAddr=192.168.210.100:9876

文章末尾会补充broker.conf文件的其他配置项及说明,可根据项目情况选择性配置。

6、启动NameServer
### 启动namesrv
$ nohup sh bin/mqnamesrv &
 
### 验证namesrv是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

我们可以在namesrv.log 中看到 'The Name Server boot success..', 表示NameServer 已成功启动。

7、启动Broker+Proxy

NameServer成功启动后,我们启动Broker和Proxy,5.x 版本下我们建议使用 Local 模式部署,即 Broker 和 Proxy 同进程部署。

### 先启动broker
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &

### 验证broker是否启动成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
$ tail -f ~/logs/rocketmqlogs/proxy.log 
The broker[broker-a,192.169.1.2:10911] boot success...

我们可以在 proxy.log 中看到“The broker[brokerName,ip:port] boot success..”,这表明 broker 已成功启动。

8、部署完成,测试消息收发

至此,一个单节点副本的 RocketMQ 集群已经部署起来了,我们可以利用脚本进行简单的消息收发。

在进行工具测试消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ有多种方式在客户端中设置NameServer地址,这里我们利用环境变量NAMESRV_ADDR

$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...

$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...

后续会补充SDK版实现消息收发。。。

附录        broker.conf文件配置说明
#接受客户端连接的监听端口,默认10911
listenPort=10911

#name server服务器地址及端口,可以是多个,分号隔开
namesrvAddr=192.168.1.100:9876

#当前 broker 监听的 IP,默认值 网卡的 InetAddress	
brokerIP1=

#存在主从 broker 时,如果在 broker 主节点上配置了 brokerIP2 属性,broker 从节点会连接主节点配置的 brokerIP2 进行同步
brokerIP2=跟 brokerIP1 一样

#broker名称,用于主从配对,相同名称的broker才能做主从设置
brokerName=mq_broker_1

#broker集群名称,用于划分broker
brokerClusterName=MQCluster001

#用于标识主从关系,0为主,其他大于0的为从(不能小于0)master设置0,slave设置1。Master角色的Broker支持读和写,Slave角色的Broker仅支持读,也就是Producer只能和Master角色的Broker连接写人消息:Consumer可以连接Master角色的Broker,也可以连接Slave角色的Broker来读取消息。
#Master节点设置
brokerId=0
#Slave节点设置
#brokerId=1

#创建topic时,若未指定topic下的队列数,则取该默认值作为默认队列数
defaultTopicQueueNums=8

#是否自动创建默认topic,生产需保持关闭
autoCreateTopicEnable=true

#是否自动创建topic的订阅组,默认开启
autoCreateSubscriptionGroup=true

#未消费的持久化消息清理时间点,在每天的什么时间删除已经超过文件保留时间的 commit log
deleteWhen=04

#持久化消息保存周期(单位:小时),超过该周期将被清理
fileReservedTime=24

#单个commitLog文件的大小限制(单位:字节)
mapedFileSizeCommitLog=1073741824

#单个consumeQueue大小限制(存储的消息条数 * 每条消息的索引大小20)
mapedFileSizeConsumeQueue=8000000

#存储使用率阀值,当使用率超过阀值时,将拒绝发送消息请求
diskMaxUsedSpaceRatio=88

#持久化消息存储根路径,默认值 $HOME/store/
storePathRootDir=/data/store

#commitLog文件存储路径 默认值$HOME/store/commitlog/
storePathCommitLog=/data/store/commitlog

#存储 consume queue 的路径 默认值 $HOME/store/consumequeue/
storePathConsumerQueue=/data/store/consumequeue

#最大消息大小限制(单位:字节)
maxMessageSize=65536

#commitLog最少刷盘page数
flushCommitLogLeastPages=4

#consumeQueue最少刷盘page数
flushConsumeQueueLeastPages=2

#commitLog刷盘间隔时间
flushCommitLogThoroughInterval=10000

#consumeQueue刷盘间隔时间
flushConsumeQueueThoroughInterval=60000

#处理消息发送线程池大小
sendMessageThreadPoolNums=128

#处理消息拉取线程池大小
pullMessageThreadPoolNums=128

#broker角色(SYNC_MASTER:同步双写Master、ASYNC_MASTER:异步复制Master、SLAVE:Slave)
brokerRole=ASYNC_MASTER

#Slave节点设置
#brokerRole=SLAVE
#刷盘方式 SYNC_FLUSH/ASYNC_FLUSH 
#SYNC_FLUSH 模式下的 broker 保证在收到确认生产者之前将消息刷盘。
#ASYNC_FLUSH 模式下的 broker 则利用刷盘一组消息的模式,可以取得更好的性能。
flushDiskType=ASYNC_FLUSH

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

P5149 会议座位 题解 归并排序 逆序对

会议座位 传送门 题目背景 话说校长最近很喜欢召开全校教职工大会,让老师们强行听他装逼 题目描述 现在校长在校园网上公布了一份座位表, n n n 位老师从左到右依次排成一行。老师们都对这个座位很满意。 然而到了开会时,校长不小心把座…

开源的前端思维导图库介绍

在开源社区中,有许多优秀的思维导图库可供开发者使用。这些库通常具有丰富的功能和灵活的API,可以满足不同需求的前端开发。以下是一些流行的开源前端思维导图库,以及它们的特点和区别。 1. **MindMap** 特点: - 基于原生…

c1-第三周

文章目录 1月份2.定义一个整形数组arr2.定义整形栈s3.输入一个字符串包括大小写和数字,将其中的大写英文字母改为小写,并且输出数字个数4.根据下面数据,编程实现要求功能: 9月1.编写程序实现以下功能或问题3.完成以下功能4.对运算…

义乌慧鼎思是做什么的?

根据天眼查的信息,我们可以对其进行一番探究。义乌慧鼎思(义乌市慧鼎思商务信息咨询有限公司)成立于2021年,注册地位于我国浙江省义乌市。从其名称来看,“慧鼎思”寓意着智慧、重量和思考,这三个词汇也许能为我们揭示企业的经营理…

基于JAVA+ springboot实现的抗疫物质信息管理系统

基于JAVA springboot实现的抗疫物质信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 …

IR 召回测试数据集(中文测试集)——T2Ranking

文章排名包括两个阶段:文章检索和文章重排序,这对信息检索(IR)领域的学术界和业界来说都是重要而具有挑战性的课题。然而,常用的文章排名数据集通常集中在英语语言上。对于非英语场景,如中文,现…

简单实现微信机器人-接入ChatGPT3.5

前端基于开源项目:wechaty实现微信网页版功能,感兴趣的小伙伴可以自行研究。 前端代码已开源:https://github.com/labi-xiaoxin/wechat-bot-wechat4u.git 本项目搭建愿景: 1、在无法科学上网的情况下,实现ChatGPT对话…

unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)

云数据库概念 uniCloud提供了一个 JSON 格式的文档型数据库。顾名思义,数据库中的每条记录都是一个 JSON 格式的文档。 它是 nosql 非关系型数据库,如果您之前熟悉 sql 关系型数据库,那么两者概念对应关系如下表: 关系型JSON 文…

基于React的低代码开发:探索应用构建的新模式

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OywB1Epu30PrvOJQ {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

华为“仓颉”不是中文编程:中文编程早有所属,势如破竹

“何时能见证中国自主研发的编程语言崛起?”这是我们这些对IT生态心怀关切的人常常深思的问题。 语言,作为文化的灵魂,总是与特定的环境和人群紧密相连。无论是中文还是英语,它们都不仅仅是交流的工具,更是各自文化背…

SL3038宽电压降压恒压 72V降12V,110V降压12V 开关型降压芯片

SL3038宽电压降压恒压开关型降压芯片是一款高效、稳定的电源管理芯片,广泛应用于各种电子设备中。它能够将高电压降至所需的低电压,并保持输出电压的稳定,从而确保设备的正常运行。本文将详细介绍SL3038的工作原理、特点、应用以及使用注意事…

5分钟 electron 入门

文章目录 番茄钟应用起步安装初始化启动 electron 项目nodemon 启动项目 主进程 app 和窗口管理 BrowserWindowapp 、BrowserWindowready 事件webContent:主进程控制网页退出应用 装载网页到窗口资源来源安全声明SPA 单页应用 进程的环境Chromium 沙盒Electron 主进…

vs2022方法上面看不到引用条数

vs2022 Win11 开发过程中经常要查看方法的引用情况,这个功能一直好好的,但是有一天突然不行了,看不到引用了,这就让人很难受,从网上查找资料说需要设置CodeLens,这个一直是勾着的,没动过这个设…

JVM-对象创建与内存分配机制深度剖析 3

JVM对象创建过程详解 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个 符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 new…

好用的便签软件,好用便签排行榜

在生活和工作中,便签软件的使用已经成为我们日常不可或缺的工具。随着技术的发展,便签软件的功能越来越强大,用户也有了更多选择。好用的便签软件有哪些,希望大家能从好用便签排行榜中找到适合自己的工具。 ##1.好用便签 好用便签…

CNC机加工引入复合机器人可以提高生产效率,降低成本

CNC加工企业在过去依赖大量的人工来完成生产线上的各项任务,包括CNC机床的上下料、物料搬运以及部分装配工作。然而,随着产能需求的不断增长和人工成本的持续上升,企业逐渐意识到自动化升级的重要性与迫切性。 面临的挑战与需求: …

Win系统创建虚拟环境利用pyinstaller打包python文件为.exe文件

0. 前提:win系统已经安装Aaconda,检查是否安装成功,命令如下: conda -V输出如下则安装成功,否则需要安装网上教程重新安装一下(PS:内存允许的话,建议装固态盘,不然很慢&…

小孩近视用白炽灯好吗?多款热门护眼台灯实测分享

如今对于家长而言,最关心的事情除了孩子的学习成绩以外,最重要的就是孩子的视力健康问题,现在的孩子近视率实在太高了,不少还在小学阶段的学生都开始配戴上了眼镜。所以想要保护孩子的视力健康一盏好的台灯肯定是必不可少的&#…

5G工业网关是什么?

随着科技的飞速发展,5G技术已经逐渐渗透到我们生活的方方面面。而在工业领域,5G工业网关作为连接工业设备与网络的关键组件,正发挥着越来越重要的作用。HiWoo Box其5G工业网关产品以其卓越的性能和稳定性,正助力企业实现数字化转型…

枚举 --java学习笔记

什么是枚举 枚举是一种特殊类 格式: 修饰符 enum 枚举类名{ 名称1,名称2,...; //枚举类的第一行必须罗列的是枚举对象的名字 其他成员... } 枚举类的第一行只能罗列一些名称,这些名称都是常量,…