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.mzph.cn/news/736562.shtml

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

相关文章

后端八股笔记------Redis

Redis八股 上两种都有可能导致脏数据 所以使用两次删除缓存的技术,延时是因为数据库有主从问题需要更新,无法达到完全的强一致性,只能达到控制一致性。 一般放入缓存中的数据都是读多写少的数据 业务逻辑代码👇 写锁&#x1f4…

[BT]小迪安全2023学习笔记(第20天:Web攻防-PHP特性)

第20天 和 (等值比较) 当使用 操作符时,PHP将进行宽松比较,也就是说,只比较两个值的等价性,而不考虑它们的类型。 如果两个值类型不同,PHP会尝试将它们转换成相同的类型,然后再进…

基础 | JVM - [指令 性能监控]

INDEX jps(jvm 进程工具)jinfo(java 配置信息工具)jstack (查看虚拟机栈信息)jmap(jvm 内存影像工具)jstat(jvm 统计信息监控工具)jvisualvm(查看…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准:3GPP TS 38.305 V18 3GPP 标准网址:Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读(一)-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读(…

对比才有伤害!ChatGPT 4.0 VS Claude 3,这就是ChatGPT偷懒变慢的根本原因!附解决方案

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

算法D38 | 动态规划1 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础 无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了? 其实并没有,我讲的理论基础内容,在动…

每日一练:LeeCode-56、合并区间【数组+滑动窗口】

4.合并区间 LeeCode-56、合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 1 < intervals.le…

GitLab 的具体步骤

安装操作系统&#xff1a;选择适合的操作系统&#xff0c;如 Linux、Windows 等。配置服务器&#xff1a;安装必要的软件和服务&#xff0c;如 Web 服务器、数据库等。安装 GitLab&#xff1a;使用官方安装包或自行编译安装&#xff0c;根据提示进行安装。配置数据库&#xff1…

Math类 --Java学习笔记

Math 代表数学&#xff0c;是一个工具类&#xff0c;里面提供的都是对数据进行操作的一些静态方法 Math提供的常用方法

C语言分析基础排序算法——交换排序

目录 交换排序 冒泡排序 快速排序 Hoare版本快速排序 挖坑法快速排序 前后指针法快速排序 快速排序优化 快速排序非递归版 交换排序 冒泡排序 见C语言基础知识指针部分博客C语言指针-CSDN博客 快速排序 Hoare版本快速排序 Hoare版本快速排序的过程类似于二叉树前序…

安卓玩机工具推荐----MTK芯片读写分区 备份分区 恢复分区 制作线刷包 工具操作解析

安卓玩机工具推荐----高通芯片9008端口读写分区 备份分区 恢复分区 制作线刷包 工具操作解析 安卓玩机工具推荐----ADB状态读写分区 备份分区 恢复分区 查看分区号 工具操作解析 前面做了两期教程。分别解析了下ADB端口与高通9008端口备份分区一些基础的常识&#xff0c;那么…

【探索程序员职业赛道:挑战与机遇】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

经典面试题HTTP请求主要有以下几种方式

GET&#xff1a;用于请求服务器发送指定资源。GET请求通常用于获取信息&#xff0c;而不会对资源进行修改&#xff0c;因此它是幂等的。 POST&#xff1a;用于向服务器提交数据&#xff0c;通常用于创建新资源或更新现有资源。POST请求不是幂等的&#xff0c;因为它可能会多次…

EMC技术:基础概念到应用的解读?|深圳比创达电子

电磁兼容性&#xff08;Electromagnetic Compatibility&#xff0c;简称EMC&#xff09;作为一项重要的技术领域&#xff0c;在现代电子设备中扮演着至关重要的角色。本文将从基础概念开始&#xff0c;逐步深入探讨EMC技术的原理、应用和意义。 一、EMC的基础概念 EMC是指电子…

ELFK 分布式日志收集系统

ELFK的组成&#xff1a; Elasticsearch: 它是一个分布式的搜索和分析引擎&#xff0c;它可以用来存储和索引大量的日志数据&#xff0c;并提供强大的搜索和分析功能。 &#xff08;java语言开发&#xff0c;&#xff09;logstash: 是一个用于日志收集&#xff0c;处理和传输的…

收割机案例-简单的动态规划

#include<iostream> using namespace std; // 创建土地 short land[32][32]; short n,m;// 实际使用的土地大小 short landA[32][32];//用A收割机收割数量记录 short landB[32][32];// 用B收割机收割数量记录 int main(){cin>>n>>m;// 存储农作物产量for(sho…

LeetCode:猜数字游戏

解决方案的性能&#xff1a; 时间复杂度&#xff1a;O&#xff08;n&#xff09; 题目描述&#xff1a; 写出一个秘密数字&#xff0c;并请朋友猜这个数字是多少。朋友每猜测一次&#xff0c;你就会给他一个包含下述信息的提示&#xff1a; 猜测数字中有多少位属于数字和确切…

C#,子集和问题(Subset Sum Problem)的算法与源代码

1 子集和问题&#xff08;Subset Sum Problem&#xff09; 给定一组非负整数和一个值和&#xff0c;确定给定集合中是否存在和等于给定和的子集。 示例&#xff1a; 输入&#xff1a;set[]{3&#xff0c;34&#xff0c;4&#xff0c;12&#xff0c;5&#xff0c;2}&#xff…

基于智慧灯杆的智慧城市解决方案(1)

背景概述 智慧城市要求充分运用信息和通信技术手段感测、分析、整合城市运行核心系统的各项关键信息,从而对于包括民生、城市服务、工商业活动在内的各种需求做出智能的响应。在这个过程中,迫切需要一个信息采集、信息路灯作为城市中密度最大、数信息发布的载体。处理、量最…

【RHCSA问答题】第十二章 管理网络

系列文章目录 第一章 红帽企业Linux入门 第二章 访问命令行 第三章 从命令行管理文件&#xff08;上&#xff09; 第三章 从命令行管理文件&#xff08;下&#xff09; 第五章 创建、查看和编辑文本文件&#xff08;上&#xff09; 第五章 创建、查看和编辑文本文件&#xff0…