跳到主要内容

三十、RocketMQ消息轨迹-设计篇


本节目录

  • 1、消息轨迹数据格式

2、 记录消息轨迹;

3、 如何存储消息轨迹数据;

RocketMQ消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹-设计相关。

RocketMQ消息轨迹,主要跟踪消息发送、消息消费的轨迹,即详细记录消息各个处理环节的日志,从设计上至少需要解决如下三个核心问题:

  • 消费轨迹数据格式
  • 记录消息轨迹(消息日志)
  • 消息轨迹数据存储在哪?

1、消息轨迹数据格式

RocketMQ4.5版本消息轨迹主要记录如下信息:

  • traceType
    跟踪类型,可选值:Pub(消息发送)、SubBefore(消息拉取到客户端,执行业务定义的消费逻辑之前)、SubAfter(消费后)。
  • timeStamp
    当前时间戳。
  • regionId
    broker所在的区域ID,取自BrokerConfig#regionId。
  • groupName
    组名称,traceType为Pub时为生产者组的名称;如果traceType为subBefore或subAfter时为消费组名称。
  • requestId
    traceType为subBefore、subAfter时使用,消费端的请求Id。
  • topic
    消息主题。
  • msgId
    消息唯一ID。
  • tags
    消息tag。
  • keys
    消息索引key,根据该key可快速检索消息。
  • storeHost
    跟踪类型为PUB时为存储该消息的Broker服务器IP;跟踪类型为subBefore、subAfter时为消费者IP。
  • bodyLength
    消息体的长度。
  • costTime
    耗时。
  • msgType
    消息的类型,可选值:Normal_Msg(普通消息),Trans_Msg_Half(预提交消息),Trans_msg_Commit(提交消息),Delay_Msg(延迟消息)。
  • offsetMsgId
    消息偏移量ID,该ID中包含了broker的ip以及偏移量。
  • success
    是发送成功。
  • contextCode
    消费状态码,可选值:SUCCESS,TIME_OUT,EXCEPTION,RETURNNULL,FAILED。