消息队列(三)RocketMQ如何存储消息

简介:

Rocket的消息是有consume queue和commit log组成。


Consume Queue

Consume queue是消息的逻辑队列,相当于字典目录,用来指定消息在物理文件(commit log)上的位置,我们可以在配置中指定consumequeue和commitlog存储的目录。每一个topic下的每个queue都有一个对应的consumqueue文件。

5.png

  • 根据topic和queueid来组织文件,topicA中有2个队列(0和1),那么topicA和queueID=0就组成一个consume queue,另外topicA和queueID=1就组成另外一个consume queue

  • 按照消费端的GroupNanme来分组重试队列,如果消费端消费失败,消息将被发往重试队列,图中的%RETRY%ConsumerGroupA

  • 按照消费端的GroupName来分组死信队列,如果消费端消费失败,并重试指定次数后,仍然失败,则发往死信队列(用于存放无法传递的消息),图中的%DLQ%ConsumerGroupA

Consume queue中的存储单元是20字节长度的二进制数据,顺序读写

6.png

  • commitLog Offset,这条消息在commit log中的实际偏移量

  • size存储的是这条消息的大小

  • message tag hashcode,是存储这个消息的TAG的哈希值,用于订阅时消息过滤


Commit Log

消息存放的物理文件,每台broker上的commit log被本机所有的queue共享不做任何区分。消息存储内容长度不固定,文件顺序写,随机读。








      本文转自linuxjavachen  51CTO博客,原文链接:http://blog.51cto.com/littledevil/2068723,如需转载请自行联系原作者


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6天前
|
消息中间件 网络协议 JavaScript
MQTT常见问题之微消息队列mqtt支持ipv6失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
6天前
|
消息中间件 物联网 Java
MQTT常见问题之微消息队列配置失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
6天前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88387 0
|
6天前
|
存储 消息中间件 缓存
RocketMQ 5.0 分级存储背后技术优化包含那几个方面
RocketMQ 5.0 分级存储背后的技术优化是一个综合性的系统工程,需要考虑多个方面,包括存储介质的选择、数据读写策略的设计、数据压缩和解压缩技术的引入、自动的数据分级和迁移机制的实现,以及高可用性和容错性的保证等。这些技术优化的目的是为了实现存储成本和性能的最优平衡,提高系统的可靠性和可用性,满足大规模数据处理的需求。
107 1
|
6天前
|
消息中间件 分布式计算 监控
Python面试:消息队列(RabbitMQ、Kafka)基础知识与应用
【4月更文挑战第18天】本文探讨了Python面试中RabbitMQ与Kafka的常见问题和易错点,包括两者的基础概念、特性对比、Python客户端使用、消息队列应用场景及消息可靠性保证。重点讲解了消息丢失与重复的避免策略,并提供了实战代码示例,帮助读者提升在分布式系统中使用消息队列的能力。
42 2
|
6天前
|
消息中间件 Java
springboot整合消息队列——RabbitMQ
springboot整合消息队列——RabbitMQ
82 0
|
6天前
|
消息中间件 存储 运维
为什么选择云消息队列 RocketMQ 版
为什么选择云消息队列 RocketMQ 版
11 1
|
6天前
|
消息中间件 存储 运维
深入理解MQ消息队列的高可用与可靠性策略
深入理解MQ消息队列的高可用与可靠性策略
718 3
|
6天前
|
消息中间件 大数据 Java
消息队列 MQ
消息队列 MQ
33 3
|
6天前
|
消息中间件 数据安全/隐私保护
MQTT微消息队列服务器连接报错:Error: Connection refused: Not authorized
使用MQTTX工具进行测试时,通过AccessKey创建了Client ID的用户名和密码。配置了公网接入点及端口1883,但尝试连接时出现错误。已附上工具截图:![](https://ucc.alicdn.com/pic/developer-ecology/3byii5uar64gg_36327474e991439da422f38c450ef153.png)。确认过用户名、密码和Client ID无误,问题仍未解决,期待回复!

热门文章

最新文章

相关产品

  • 云消息队列 MQ