RocketMQ学习笔记三(黑马)大神级

课程来源:6.RocketMQ安装_哔哩哔哩_bilibili (时长:19.5h)

讲解版本:4.5版本(我是以4.8版本实践的)

目录

第一部分 核心功能 

第1章 RocketMQ的下载、安装、启动和测试(Linux环境)

启动:

测试:

第2章 RocketMQ集群搭建

2.1 集群特点

2.2 集群模式

2.3 双主双从集群搭建

2.3.1 总体架构

2.3.2 集群工作流程★★★

2.3.3 搭建集群的准备工作★★

2.3.4 修改broker配置文件★★★

1)master1

2)slave2

3)master2

4)slave1

2.3.5 服务启动

1)启动NameServe集群

2)启动Broker集群

2.3.6 通过jps命令检查启动状态

2.4 mqadmin管理工具

2.5 集群监控平台搭建(rocketmq-dashboard)

2.5.1 在Windows中测试

2.5.2 在Linux集群中测试

第3章 消息发送&接收样例

3.1 基本样例

3.1.1 消息发送基本样式Producer

1)发送同步消息

2)发送异步消息

3)单向发送消息

3.1.2 消息接收基本样式Consumer

1)负载均衡模式

2)广播模式

3.2 顺序消息

3.2.1 构建虚拟订单

3.2.2 顺序消息生产

3.2.3 顺序消息消费

3.3 延时消息

3.4 批量消息

3.5 过滤消息

1. Tag过滤

2. SQL过滤

3.6 事务消息★★★

3.6.1 流程分析

1)事务消息发送及提交

2)事务补偿

3)事务消息状态

3.6.2 发送事务消息

1) 事务性生产者代码

2) 事务性消费者代码

3) 测试

3.6.3 使用限制


第一部分 核心功能 

第1章 RocketMQ的下载、安装、启动和测试(Linux环境)

启动:

第一步,修改bin/runserver.sh文件和bin/runbroker.sh文件中配置大小;

第二步,启动NameServer;

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

第三步,启动Broker;

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

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

说明:也可以直接去家目录中查看启动日志

NameServer的启动日志所在位置:~/logs/rocketmqlogs/namesrv.log

Broker的启动日志所在位置:~/logs/rocketmqlogs/broker.log 

测试:

发送消息

# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.使用安装包的Demo发送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

接收消息

# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

关闭RocketMQ

# 1.关闭NameServer
sh bin/mqshutdown namesrv
# 2.关闭Broker
sh bin/mqshutdown broker

第2章 RocketMQ集群搭建

2.1 集群特点

  • NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。

  • Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。

  • Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。

  • Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。

2.2 集群模式

1)单Master模式

2)多Master模式

3)多Master多Slave模式(异步)

每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:

  • 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;

  • 缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

4)多Master多Slave模式(同步)

每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:

  • 优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;

  • 缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。

2.3 双主双从集群搭建

2.3.1 总体架构

消息高可用采用2m-2s(同步双写)方式

2.3.2 集群工作流程★★★

  1. 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。

  2. Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关系。

  3. 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic。

  4. Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息。

  5. Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息。

2.3.3 搭建集群的准备工作★★

说明:以下1-5步骤,两台机器上都需要执行。 

1. 准备两台Linux环境的机器

序号IP修改hostname角色架构模式
1192.168.6.105centos105nameserver、brokerserverMaster1、Slave2
2192.168.6.106centos106nameserver、brokerserverMaster2、Slave1

当然,可以4台机器哦。

2. 在host文件添加信息

vim /etc/hosts

配置如下:

# nameserver
192.168.6.105 rocketmq-nameserver1
192.168.6.106 rocketmq-nameserver2
# broker
192.168.6.105 rocketmq-master1
192.168.6.105 rocketmq-slave2
192.168.6.106 rocketmq-master2
192.168.6.106 rocketmq-slave1

配置完成后, 重启网卡

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

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

相关文章

米哈游一面前端开发岗面试题,你会做几道?

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

【算法专题--双指针算法】leetcode--283. 移动零、leetcode--1089. 复写零

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1. 移动零&#xff0…

2023年全球软件质量效能大会(QECon上海站):智慧碰撞,质量与效能的新篇章(附大会核心PPT资料下载)

在数字化浪潮席卷全球的今天,软件行业正以前所未有的速度发展。作为推动这一进程的重要力量,软件质量与效能的提升显得尤为关键。2023年全球软件质量&效能大会(QECon上海站)的盛大召开,无疑为业界提供了一次难得的…

设计模式之代理模式(Proxy Pattern)【结构性模式】

为什么用结构性模式? 结构性模式关注点“怎样组合对象/类?”所以我们关注下类的组合关系类结构型模式关心类的组合,由多个类可以组合成一个更大的(继承)对象结构型模式关心类与对象的组合,通过关联关系在一…

第十五届蓝桥杯模拟考试III_物联网设计与开发官方代码分析

目录 前言:显示界面部分: 前言: 这次模拟的效果很不好。85分,4h的限时我花了两天完成,这个时间是远远超出要求的,而且最后还只拿到56分,抛开分数高低不提,就这个用时属实蜗牛一样的速…

【matlab】exportgraphics函数将生成的图片保存到指定文件夹中

【matlab】exportgraphics函数将生成的图片保存到指定文件夹中 使用matlab中,很多时候我们会生成一些图片,并且我们希望生成完显示出来后自动保存到指定路径,以下是本人常用的一个方法推荐 在Matlab中,exportgraphics函数用于将…

Seata 2.x 系列【8】Spring Cloud 集成客户端

有道无术,术尚可求,有术无道,止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 问题演…

裸辞18K外包,面试阿里、字节全都一面挂,哭死.....

测试员可以先在外包积累经验,以后去大厂就很容易,基本不会被卡,事实果真如此吗?但是在我身上却是给了我很大一巴掌... 所谓今年今天履历只是不卡简历而已,如果面试答得稀烂,人家根本不会要你。况且要不是大…

iptables详细介绍

在 CentOS 中,iptables 是一种用于配置和管理网络防火墙的工具,它提供了一种灵活和强大的方式来控制进出服务器的网络流量。以下是 CentOS 中 iptables 的主要内容: 规则链(Chains): iptables 使用规则链来组织规则,常见的链包括: INPUT:处理进入服务器的数据包。OUTP…

固定资产管理系统:井然有序,提升利用率,降损增值的解决之道。

固定资产管理系统是一种用于管理和跟踪组织内固定资产的软件系统。固定资产是指组织长期持有并用于生产、运营或提供服务的资产,例如土地、建筑物、机器设备、车辆等。 固定资产管理系统提供了一种集中管理和监控固定资产的方式,帮助组织更好地管理其资产…

外包干了9天,技术退步明显。。。。。

先说一下自己的情况,本科生,2018年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…

HarmonyOS NEXT应用开发—自定义日历选择器

介绍 本示例介绍通过CustomDialogController类显示自定义日历选择器。 效果图预览 使用说明 加载完成后显示主界面,点当前日期后会弹出日历选择器,选择日期后会关闭弹窗,主页面日期会变成选定的日期。 实现思路 获取当前月和下个月的日期…