当前位置: 首页 > news >正文

RocketMQ基础概念的理解

1、生产者

生产者主题之间存在多对多关系。一个生产者可以向多个主题发送消息,一个主题可以接收来自多个生产者的消息。这种多对多关系有助于提高性能扩展和灾难恢复能力。
在这里插入图片描述

2、消费者以及消费者组

一个队列可以被多个消费者(其中这多个消费者必须分别属于不同消费者组)消费,也就说,如果只有一个消费者组,一个队列只能被一个消费者消费。一个消费者可以消费多个队列。

举个例子就是,一个主题里面有10个队列,消费者组A中有5个消费者,一个消费者负责消费2个消息队列,实现负载均衡。消费者组B中有2消费者,其中一个消费者负责5个消息队列的消费。

在业务处理上,一个消费组中消费者们通常只针对一种Topic类型进行消费,于是有了消费者组订阅Topic这一说法。

消费者组同一时刻只能消费一个Topic的消息,不能同时消费多个Topic消息。

一个消费者组中的消费者必须订阅完全相同的Topic。

当然现在我们说得是,消费颗粒度为队列,一个消费组的消费者数量应该小于等于Topic中的队列数量;当消费颗粒度为消息时,则不存在这种限制。

在这里插入图片描述

3、生产者组

生产者组中的生产者在同一时刻,同时生产相同类型的Topic消息,需要注意得是,生产者组中的生产者也可能都会生产另外一种Topic消息,所以,在下一个时刻,可能会同时生产另外一种类型的Topic消息。

4、队列

也叫分区(Partition),一个主题可以有多个队列,每个队列可以存放多个消息。

5、主题与分片(Sharding)以及broker

在这里插入图片描述

在这里插入图片描述

6、消息标识

RocketMQ中每个消息拥有唯一的MessageId,且可以携带具有业务标识的key,以方便对消息的查询。

不过需要注意的是,MessageId有两个:
生产者 send()消息时会自动生成一个MessageId(msgId);
当消息到达Broker后,Broker也会自动生成一个MessageId(offsetMsgId)。msgId、offsetMsgId与key都
称为消息标识。

msgId:由producer端生成,其生成规则为:producerIp + 进程pid + MessageClientIDSetter类的ClassLoader的hashCode + 当前时间 + AutomicInteger自增计数器

offsetMsgId:由broker端生成,其生成规则为:brokerIp + 物理分区的offset(Queue中的
偏移量)

key:由用户指定的业务相关的唯一标识

7、系统架构

在这里插入图片描述

http://www.xdnf.cn/news/892027.html

相关文章:

  • 28. Revit API:尺寸标注(Dimension)
  • C++STL-vector的使用
  • 非隔离电源方案
  • 【信息系统项目管理师-选择真题】2025上半年(第一批)综合知识答案和详解
  • 【Python训练营打卡】day44 @浙大疏锦行
  • 【PhysUnits】15.15 变量类型(variable.rs)
  • 前端没有“秦始皇“,但可以做跨端的王[特殊字符]
  • 驭码CodeRider 2.0 产品体验 — 搭建邮件服务
  • Web前端之原生表格动态复杂合并行、Vue
  • 农田水利如何「聪明」起来?Modbus转Ethernet IP破解设备互联
  • C语言| 指针在数组中的移动
  • qt ui 转python
  • 三维GIS开发cesium智慧地铁教程(3)entity实体
  • 岩石三轴试验机
  • Spring Boot-面试题(52)
  • 每日算法刷题Day23 6.5:leetcode二分答案3道题,用时1h40min(有点慢)
  • JS深入学习 — 循环、函数、数组、字符串、Date对象,Math对象
  • 前端面试四之Fetch API同步和异步
  • c++算法学习3——深度优先搜索
  • 【java面试】框架篇
  • snprintf函数用法及注意事项详解
  • Redisson简明教程—你家的锁芯该换了
  • 71 LV信息查看
  • DeepSeek私有化部署的理性抉择:谁需要?谁不必?
  • SSH 和 Telnet 介绍、区别与使用方法
  • JAVA-springboot JUnit单元测试
  • Qt实现一个悬浮工具箱源码分享
  • LeetCode_LCR 509 斐波拉契
  • 经济学顶刊QJE:构建从非结构化文本数据中挖掘经济规律的新框架!
  • 【QT】qtdesigner中将控件提升为自定义控件后,css设置样式不生效(已解决,图文详情)