Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Apache RocketMQ 中Message 消息

深入理解Apache RocketMQ 中Message 消息的核心概念

作者:lang20150928

深入理解一下Apache RocketMQ中Message(消息)这个核心概念,这份文档详细阐述了消息的定义、在模型中的位置、内部属性、约束和使用建议,感兴趣的朋友跟随小编一起学习吧

好的,我们来深入理解一下 Apache RocketMQ 中 Message (消息) 这个核心概念。这份文档详细阐述了消息的定义、在模型中的位置、内部属性、约束和使用建议。

推荐阅读:RocketMQ 消息Message的结构和使用方式详解

你可以将 Message 看作是 RocketMQ 系统中数据传输和处理的最小原子单位。它承载了业务数据,并附带了丰富的元信息,是生产者、Broker 和消费者之间通信的载体。

1.Message的本质定义

2.Message在模型中的位置

3.Message的核心内部属性

这些属性分为系统保留属性 (System retention attributes)可选属性 (Optional attributes),以及负载 (Load)

系统保留属性 (由系统或生产者设置)

可选属性 (由生产者设置)

时间戳属性

重试与自定义

4.Message的行为约束

5.Message的使用建议与最佳实践

总结与核心理解

  1. Message 是原子单元:它封装了业务数据和元信息,是 RocketMQ 传输的最小单位。
  2. Message 是不可变的:内容一旦产生,在传递过程中不应被修改。最佳实践是“读取-创建-发送”新消息。
  3. Message 是持久化的:默认落盘存储,保证可靠性。
  4. Message 拥有丰富的属性:
    • Topic/Queue/Offset 定义了其在系统中的位置和顺序。
    • Message ID 提供全局唯一标识。
    • Keys/Tag 支持查询和过滤。
    • Message Type 定义了语义(普通、顺序、延迟、事务)。
    • Sending Time/Store Timestamp 记录了关键时间点。
    • Retry Times 协助处理消费失败。
    • Custom Attributes 提供扩展能力。
    • Load 承载实际业务数据。
  5. Message 有严格的大小限制:默认 4MB。避免大消息是关键设计原则,应通过拆分或外链方式处理大数据。
  6. 最佳实践
    • 合理使用 Tag 进行消息过滤。
    • 利用 Keys 进行消息追踪。
    • 遵守不可变性,通过 buildFrom 创建新消息。
    • 绝对不要发送超过 4MB 的消息,采用拆分或外链方案。

简而言之,Message 是 RocketMQ 的“信封”和“信件”本身。理解其结构、属性、约束和最佳实践,对于设计高效、可靠、可维护的消息系统至关重要。记住:小消息、不可变、善用属性、规避大负载

您可能感兴趣的文章:
阅读全文