本文介绍如何查看消息轨迹。
当一条消息从生产者发送到消息队列 RocketMQ版服务端,再由消费者进行消费,消息队列 RocketMQ版会完整记录消息的全链路流转过程,并以消息轨迹的形式呈现在消息队列 RocketMQ版控制台。
消息轨迹可作为生产环境中排查问题强有力的数据支持。消息轨迹记录了消息从生产端到消息队列 RocketMQ版服务端,最后到消费端的整个过程,包括各阶段状态、耗时、生产者 IP 地址、消费者 IP 地址等。
推荐您在以下场景中使用消息轨迹功能:
消息队列 RocketMQ版目前支持 4.x 和 5.x 两种版本实例。
只有 4.x 版本实例需要在生产者和消费者客户端中开启消息轨迹,开启后才能在控制台中查看消息轨迹。构造函数的参数 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);
在生产者和消费者客户端开启消息轨迹之后,可以参考以下步骤在控制台中查看消息轨迹。
消息轨迹查询结果包括以下三部分:消息生产者、Topic 和消息消费。
参数 | 说明 |
---|---|
生产地址 | 对应生产者的 IP 地址以及端口号。 |
生产状态 | 消息生产的状态。 |
发送耗时 | 消息从生产端生产到发送到消息队列 RocketMQ版服务端的时间消耗,由客户端统计,精确到毫秒。 |
生产时间 | 消息生产时的客户端时间戳。 |
参数 | 说明 |
---|---|
存储状态 | 消息在服务端的存储状态。 |
存储时间 | 服务端收到消息的时间。 |
一条消息可能会被多个消费者消费,所以消息消费信息以列表形式呈现,且支持根据消费时间和 Group 进行筛选。列表中展示的信息如下。
参数 | 说明 |
---|---|
Group | 消费者所在 Group 的 Group ID。 |
消费状态 | 消费者消费消息的状态。
|
消费地址 | 消息消费者客户端的 IP 地址及客户端启动时间戳。 |
消费处理耗时 | 消息消费开始到结束的耗时,由客户端统计,精确到毫秒。 |
重试消费次数 | 消费失败后的重试消费的次数,达到预设的最大重试次数后,如果仍旧消费失败,此消息会进入死信队列。 |
消费时间 | 客户端记录的消息消费时间。 |