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.ProducerSendResult [sendStatus=SEND_OK, msgId= ...$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.ConsumerConsumeMessageThread_%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.hqwc.cn/news/521250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线上一番赏抽卡小程序开发,互联网时代下的创新发展

抽卡在当下已经不是一个陌生的词了,随着消费者对各种娱乐的需求逐渐增加,市场中也出现了各种各样的娱乐消费模式,其中一番赏抽卡模式就是其中一种。一番赏是比较经典的模式,与抽卡结合起来能够给消费者带来更多的新鲜乐趣。 在抽…

想交易盈利?Anzo Capital昂首资本发现了一本畅销书

要想在复杂多变的外汇市场中迅速加深了解并想通过交易每天都可以盈利,是通过每天阅读大量的书籍吗?是每天成为行业培训网络资源和论坛的常客吗?是通过花钱请有经验的交易者进行个人培训吗?还是进行EA交易呢? 都不是&a…

TextMonkey: An OCR-Free Large Multimodal Model for Understanding Document

TextMonkey: An OCR-Free Large Multimodal Model for Understanding Document 相关链接:arxiv github 关键字:Large Multimodal Model、OCR-Free、Document Understanding、Text-Centric Tasks、Token Resampling 摘要 我们提出了TextMonkey&#xff0…

Enzo Life Sciences Cortisol(皮质醇) ELISA kit

皮质醇又称为氢化可的松,是一种由胆固醇合成的类固醇激素。它是肾上腺皮质产生和分泌的主要糖皮质激素。皮质醇在血液中以游离皮质醇的形式存在,或与皮质类固醇结合球蛋白(CBG)结合。皮质醇水平在早上7点左右最高,晚上最低。皮质醇可以调节新…

【ETCD】简介安装常用操作---图文并茂详细讲解

目录 一 简介 1.1 etcd是什么 1.2. 特点 1.3. 使用场景 1.4 关键字 1.5 工作原理 二 安装 2.1 etcd安装前介绍 2.2 安装 2.3 启动 2.4 创建一个etcd服务 三 常用操作 一 简介 1.1 etcd是什么 etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建…

多功能线缆光纤验证器-AEM CV-100

TestPro CV100 多功能电缆验证器 屡获殊荣的 TestPro CV100 多功能电缆验证器专为当今的现代智能建筑网络基础设施而设计。 它提供了当今可用的功能最丰富的测试平台,以及允许定制所需的确切测试套件的基于模块化的平台。 智能建筑测试套件(K60 和 K61…

Android视角看鸿蒙第四课(module.json中的各字段含义之descriptionmainElement)修改程序入口

Android视角看鸿蒙第三课(module.json中的各字段含义之description&mainElement) 前言 上编文章了解了module.json中的name和type两个字段的含义及变更字段需要注意的事项,也明白了如何去实现类似Android library的功能。 这篇文章继续了解module.json中的des…

机器学习-面经(part5、KNN和SVM)

8. KNN 8.1 简述一下KNN算法的原理? 一句话概括:KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别 工作原理:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数…

【Educoder数据挖掘实训】异常值检测-值域法

【Educoder数据挖掘实训】异常值检测-值域法 开挖! 这个题中 l o f lof lof算法给的很抽象,先用比较通俗的方式说一下: 首要想法是找到不合群的点,也就是异常点。采用的方法是对局部可达密度进行判断。相较于其他普通的简单基于聚…

ElasticSearch之通过search after和scroll解决深度分页问题

写在前面 通过from,size来进行分页查询时,如下: 当from比较大时会有深度分页问题,问题产生的核心是coordinate node需要从每个分片中获取fromsize条数据,当from比较大,整体需要获取的数据量也会比较大&am…

MongoDB安装教程(附带安装包)

目录 解压安装包 傻瓜式安装 选择安装目录 安装完成 启动验证 验证成功 解压安装包 选择所需要的进行安装 傻瓜式安装 选择安装目录 安装完成 启动验证 mongod --dbpathD:\mongodb\data\db 验证成功

vue 使用谷歌地图 @googlemaps/js-api-loader 进行模糊搜索

<template><div class"map"><div class"mapLeftStyle"><el-inputv-model"input"placeholder"请输入内容"class"controls"input"chnageinput"><i slot"prefix" class"e…