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

news2024/10/6 8:23:25

初次使用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

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

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

相关文章

Python自动化测试:API接口自动化——requests、webSocket

接口自动化测试1 一、requests二、简单示例1.导入/引入库2.请求与响应示例1>简单访问百度主页-GET请求2>简单的登录请求-POST请求3>保存cookies至头信息headers4>其他接口请求时携带headers 三、webSocketwebSocket连接与数据收发示例 本文介绍了借助Python的reque…

Manacher 算法——Leetcode 5.最长回文子串

在了解之前,我们先要了解什么是回文串,什么是回文子串。 回文串和回文子串: 回文串是指一个字符串正序遍历和反向遍历结果相同的字符串。如 ABBA,正着读反着读结果是一样的。 有了回文串的概念,回文子串的概念也就显…

顺势交易中,用什么方法识别趋势的开始与结束?

在交易过程中,大家都知道顺势交易的重要性,但如何对趋势的开始和结束进行量化判断呢? 趋势交易需要一个正确的出发点和思想方向。也就是说,趋势交易需要关注什么呢?有哪些相关的技术手段可以利用呢? 首先&a…

springboot使用异步多线程

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 在shigen之前的很多文章中,提到了线程池: 高性能API设计…

一 windso10 笔记本刷linux cent os7.9系统

1:准备材料 16G以上U盘, 笔记本一台 镜像选了阿里云镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 软件:链接:https://pan.baidu.com/s/13WDp2bBU1Pdx4gRDfmBetg 提取码:09s3 2:把镜像写入U盘,本人已经写入好了,选择镜像,点开始就是,确定等…

javascript正则深入

文章目录 一、前言二、高级`API`2.1、模式匹配的用法`(x)`2.2、非捕获括号的模式匹配`(?:x)`2.3、先行断言`x(?=y)`2.4、后行断言`(?<=y)x`2.5、正向否定查找`x(?!y)`2.6、反向否定查找`(?<!y)x`2.7、字符集合和反向字符集合的用法 `[xyz] / [^xyz]`2.8、词边界和非…

开关电源安规测试标准与测试要求

安规测试是对开关电源进行电气性能、安全性能等检测&#xff0c;确保开关电源符合规定并且安全可靠&#xff0c;为开关电源的质量把关。那么开关电源安规测试有哪些测试要求和标准呢&#xff1f; 开关电源安规测试要求 一、测试前 1. 首先&#xff0c;要检查测试环境&#xff0…

电子商务平台中商品数据采集|API数据接口采集商品的高效性体现

电子商务平台由一个个产品所构成,通过对产品的分析可以有效发掘用户需求,优化店铺产品结构,提升客户粘性、客单价、销售利润等。 一、产品行业数据采集API接口 采集产品行业数据的核心目的是了解该产品的市场需求变化情况,常用到的数据采集指标包括产品搜索指数和产品交易指数两…

项目建设计划书-word

【项目建设计划书-word】 项目描述&#xff08;项目目标&#xff0c;客户需求情况&#xff0c;项目交付清单&#xff0c;验收标准和交付期限&#xff0c;服务及约束&#xff09;项目组织&#xff08;项目组人员架构&#xff0c;职责分工&#xff0c;人员投入安排及时间点安排&…

Python爬虫——Scrapy-1

目录 简介 安装 基本使用 1. 创建爬虫的项目 2. 创建爬虫文件 3. 运行爬虫代码 scrapy项目组成 scrapy工作原理 ​编辑 58同城 scrapy架构组成 汽车之家 总结 简介 Scrapy 是一个基于 Python 的开源网络爬虫框架&#xff0c;它可以帮助开发者快速、高效地构…

MySQL和语言的连接

1.下载开发包 有了之前的基础&#xff0c;就可以使用语言来使用数据库了&#xff0c;实际上原生命令行操作数据库的场景比较少&#xff0c;语言级别的库和包才更加常用&#xff0c;接下我来带您学习如何使用 C/C 访问 MySQL 客户端。 然后创建一个可以远程登录的用户&#xf…

Transformer中的FlashAttention

FlashAttention是一种用于Transformer模型的近似注意力机制&#xff0c;旨在减少注意力计算和内存需求。引入FlashAttention是因为传统Transformer模型中的自注意力机制在处理长序列时存在时间和存储复杂度上的挑战&#xff0c;需要大量的计算资源和内存来处理更长的上下文背景…

【数据结构】二、线性表:6.顺序表和链表的对比不同(从数据结构三要素讨论:逻辑结构、物理结构(存储结构)、数据运算(基本操作))

文章目录 6.对比&#xff1a;顺序表&链表6.1逻辑结构6.2物理结构&#xff08;存储结构&#xff09;6.2.1顺序表6.2.2链表 6.3数据运算&#xff08;基本操作&#xff09;6.3.1初始化6.3.2销毁表6.3.3插入、删除6.3.4查找 6.对比&#xff1a;顺序表&链表 6.1逻辑结构 顺…

禁闭室的乐趣

解法&#xff1a; 暴力 #include<iostream> #include<vector> #include<algorithm> using namespace std; #define endl \n bool cmp(string& a, string& b) {if (a.size() ! b.size())return a.size() > b.size(); } int main() {ios::sync_wi…

【李沐精读系列】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…

CentOS7 利用remi yum源安装php8.1

目录 前言remi yum源remi yum源 支持的操作系统remi yum源 支持的php版本 安装epel源安装remi源安装 php8.1查看php版本查看php-fpm服务启动php-fpm服务查看php-fpm服务运行状态查看php-fpm服务占用的端口查看 php8.1 相关的应用 前言 CentOS Linux release 7.9.2009 (Core) …

基于java springboot网上蛋糕商城项目设计和实现

基于java springboot网上蛋糕商城项目设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源…

酷克数据荣获粤港澳大湾区金融创新成果“特优解决方案”奖

近日&#xff0c;“第二届金融创新优秀应用案例与解决方案技术成果评定”正式揭晓&#xff0c;酷克数据提交的“HashData云原生金融信创数据仓库”入选特优解决方案&#xff0c;成为数据治理与数据平台类目中唯一的厂商方案。 本次评定历时5个多月&#xff0c;共257个项目参与申…

了解开源可视化表单的主要优势

为什么可视化表单深受大家喜爱&#xff1f;这就需要了解开源可视化表单的优势和特点了。在流程化办公深入人心的今天&#xff0c;提高办公协作效率早已成为大家的发展目标&#xff0c;低代码技术平台、开源可视化表单是提升办公协作效率的得力助手&#xff0c;一起来看看它的优…

项目管理工具及模板(甘特图、OKR周报、任务管理、头脑风暴等)

项目管理常用模板大全&#xff1a; 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 信息化项目建设全套…