RocketMQ系列3:核心技术介绍

1 介绍

RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题、队列、消息、生产者、消费者、消费者分组以及订阅关系。以下是对这些核心技术的详细说明:

2 核心技术实现

2.1 主题(Topic)

1. 定义 :主题是RocketMQ中消息传输和存储的顶层容器,用于标识同一类型业务逻辑的消息。它是一个逻辑概念,并非实际的消息容器。
2. 作用

  • 数据分类隔离:RocketMQ建议将不同业务类型的数据拆分到不同的主题中,以实现隔离存储和订阅。
  • 数据身份和权限管理:RocketMQ中的消息本身是匿名无身份的,同一分类的消息使用相同的主题来做身份识别和权限管理。

3. 名称 :主题名称用于标识主题,且在集群内部全局唯一。
4. 队列列表 :作为主题的组成单元,是消息存储的实际容器,一个主题内包含一个或多个队列,消息实际存储在主题的各队列内。
4. 消息类型:在创建主题时,可以指定主题中存放的消息类型,包括Normal(普通消息)、FIFO(顺序消息)、Delay(定时/延迟消息)、Transaction(事务消息)。

2.2 队列(MessageQueue)

1. 定义 :队列是RocketMQ中消息传输和存储的实际容器,也是RocketMQ消息的最小存储单元。
2. 特点

  • RocketMQ中所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储。
  • 队列天然具备顺序性,即消息按照进入队列的顺序写入存储,同一队列间的消息天然存在顺序关系。
  • 消息在队列中的位置和消息之间的顺序通过位点(Offset)进行标记管理。

2.3 消息(Message)

1. 定义 :消息是RocketMQ中最小的数据传输单元,生产者将需要发送的数据包装成消息发送给RocketMQ的服务端。
2. 特点

  • 不可变性:消息一旦产生,其内容即不可改变
  • 持久化:RocketMQ默认会对消息进行持久化,保存到服务端的存储文件中,以保证消息的可回溯性和系统故障场景下的可恢复性。

2.4 生产者(Producer)

1. 定义 :生产者负责将消息发送到RocketMQ的指定主题和队列中。
2. 发送方式

  • 同步发送:有返回值,必须等待消息发送成功才会结束。
  • 异步发送:在发送消息后立即返回,同时异步接收传递过去的消息状态。
  • 单向发送:单方面发送消息,不需要等待任何回应。

2.5 消费者(Consumer)

1. 定义 :消费者负责从RocketMQ中订阅并消费指定主题的消息。
2. 消费过程

  • 消费者先从Broker拉取消息到客户端,然后启动消费线程消费这些消息。
  • 消费者可以使用PullMessageService线程不断从Broker拉取消息,并使用ConsumeMessageService线程进行消费。

2.6 消费者分组(Consumer Group)

1. 定义 :消费者分组是RocketMQ中用于管理消费者的一个概念,同一分组内的消费者共同分摊消息并进行消费。
2. 作用

  • 通过消费者分组,可以实现消息的负载均衡和容错处理。
  • RocketMQ要求同一个消费者分组下所有消费者的消费行为要保持一致。

2.7 订阅关系(Subscription)

1. 定义 :订阅关系是指消费者分组与主题之间的关联关系,以及消费者订阅消息时的过滤规则。
2. 作用

  • 通过订阅关系,消费者可以指定要消费的主题和消息类型。
  • RocketMQ通过订阅关系来实现消息的过滤和分发。

3 总结

综上所述,RocketMQ的核心技术涉及多个核心概念,这些概念相互协作,共同实现了RocketMQ的高性能、高可用性和高可扩展性。

相关推荐
布谷歌11 小时前
Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)
java·开发语言·分布式·rabbitmq·java-rabbitmq
一个假的前端男11 小时前
RabbitMQ 消息队列 优化发送邮件
分布式·rabbitmq·ruby
A尘埃11 小时前
关闭超时订单和七天自动确认收货+RabbitMQ规范
分布式·rabbitmq
m0_7482412311 小时前
RabbitMq 基础
分布式·rabbitmq·ruby
yellowatumn15 小时前
RocketMq\Kafka如何保障消息不丢失?
分布式·kafka·rocketmq
星星点点洲1 天前
【RabbitMQ业务幂等设计】RabbitMQ消息是幂等的吗?
rabbitmq
劉煥平CHN1 天前
RabbitMQ的脑裂(网络分区)问题
网络·分布式·rabbitmq
苏生Susheng1 天前
【SpringBoot整合系列】Kafka的各种模式及Spring Boot整合的使用基础案例
java·spring boot·后端·spring·kafka·消息队列·并发
火皇4051 天前
Spring Boot 集成 RabbitMQ 并实现消息确认机制
spring boot·rabbitmq·java-rabbitmq
liangblog2 天前
将RocketMQ集成到了Spring Boot项目中,实现站内信功能
spring boot·rocketmq·java-rocketmq