You need to enable JavaScript to run this app.
导航

消息轨迹

最近更新时间2024.04.19 11:50:04

首次发布时间2022.01.18 11:41:51

本文介绍如何查看消息轨迹。

背景信息

当一条消息从生产者发送到消息队列 RocketMQ版服务端,再由消费者进行消费,消息队列 RocketMQ版会完整记录消息的全链路流转过程,并以消息轨迹的形式呈现在消息队列 RocketMQ版控制台。
消息轨迹可作为生产环境中排查问题强有力的数据支持。消息轨迹记录了消息从生产端到消息队列 RocketMQ版服务端,最后到消费端的整个过程,包括各阶段状态、耗时、生产者 IP 地址、消费者 IP 地址等。
推荐您在以下场景中使用消息轨迹功能:

  • 查看消息的生产事件,例如由哪个生产者发送、生产状态、发送耗时与生产时间等信息。
  • 查看消息的消费事件,例如由哪些消费者消费、消费状态、消息处理的耗时与消费时间等信息。
  • 辅助识别消息堆积现象。如果某消息的轨迹中未显示消费事件,可以在Group管理页面查看消费者状态,确认消息是否因堆积而导致尚未消费。

前提条件

  • 已经部署生产端和消费端服务、成功接入消息队列 RocketMQ版,并在 3 天内有消息生产和消费行为。
  • 在控制台查看消息轨迹之前,需要先在生产者和消费者客户端开启消息轨迹。

开启消息轨迹

在生产者和消费者客户端中开启消息轨迹,开启后才能在控制台中查看消息轨迹。构造函数的参数 enableMsgTrace 指定为 true,表示开启消息轨迹。

说明

暂不支持 customizedTraceTopic 参数,即 customizedTraceTopic 参数应传 null 或者传空。

示例代码如下。

  • 生产者开启消息轨迹:

    AclClientRPCHook aclHook = new AclClientRPCHook(new SessionCredentials(ACL_ACCESS_KEY,ACL_SECRET_KEY));
    DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", aclHook,true,null);
    
  • 消费者开启消息轨迹:

    AclClientRPCHook aclHook = new AclClientRPCHook(new SessionCredentials(ACL_ACCESS_KEY,ACL_SECRET_KEY)); DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_5", aclHook, new AllocateMessageQueueAveragely(),true,null);
    

查看消息轨迹

在生产者和消费者客户端开启消息轨迹之后,可以参考以下步骤在控制台中查看消息轨迹。

  1. 登录消息队列 RocketMQ版控制台
  2. 在顶部菜单栏中选择地域,并在选择左侧导航栏中单击实例列表
  3. 实例列表页面找到目标实例,单击实例名称。
  4. 在顶部页签栏中单击消息查询,然后查看消息。具体操作请参见消息查询
  5. 在查询结果中找到需要查看消息轨迹的消息条目,并单击其消息ID。
    详情页面展示消息的基本信息区域与消息轨迹区域,其中消息轨迹区域展示消息生产、在消息队列 RocketMQ版服务端中存储、订阅消费的全流程消息轨迹。详细信息请参考消息轨迹说明
    图片

消息轨迹说明

消息轨迹查询结果包括以下三部分:消息生产者、Topic 和消息消费。

消息生产者

参数

说明

生产地址

对应生产者的 IP 地址以及端口号。

生产状态

消息生产的状态。

发送耗时

消息从生产端生产到发送到消息队列 RocketMQ版服务端的时间消耗,由客户端统计,精确到毫秒。

生产时间

消息生产时的客户端时间戳。

Topic

参数

说明

存储状态

消息在服务端的存储状态。

存储时间

服务端收到消息的时间。

消息消费

一条消息可能会被多个消费者消费,所以消息消费信息以列表形式呈现,且支持根据消费时间和 Group 进行筛选。列表中展示的信息如下。

参数

说明

Group

消费者所在 Group 的 Group ID。

消费状态

消费者消费消息的状态。

  • 成功:消息已被消费者成功消费。
  • 失败:消费失败,原因包括消息处理超时、回调抛出异常、回调返回 null 或回调返回消费失败等。

消费地址

消息消费者客户端的 IP 地址及客户端启动时间戳。

消费处理耗时

消息消费开始到结束的耗时,由客户端统计,精确到毫秒。

重试消费次数

消费失败后的重试消费的次数,达到预设的最大重试次数后,如果仍旧消费失败,此消息会进入死信队列。

消费时间

客户端记录的消息消费时间。