消息轨迹记录了消息从生产端到 TDMQ RocketMQ 版服务端,最后到消费端的整个过程,包括各阶段的时间(精确到微秒)、执行结果、生产者 IP、消费者 IP 等。
前提条件
您已经部署好生产端和消费端服务,并在3天内有消息生产和消费。
如果您使用的是 5.0 及以上版本的 gRPC 客户端进行消息的生产和消费,则无需在客户端另行开启轨迹开关。
如果您使用的是 4.x 版本的客户端,或者 5.0 以上版本的 Remoting 客户端,则需要在客户端来设置开启消息轨迹功能,具体设置示例如下:
更多关于客户端的说明请参见 社区客户端说明。
生产者设置DefaultMQProducer producer = new DefaultMQProducer(namespace, groupName, // ACL权限 new AclClientRPCHook(new SessionCredentials(AK, SK)), true, null);Push 消费者设置
// 实例化消费者 DefaultMQPushConsumer pushConsumer = new DefaultMQPushConsumer(NAMESPACE,groupName, new AclClientRPCHook(new SessionCredentials(AK, SK)), new AllocateMessageQueueAveragely(), true, null);Pull 消费者设置
DefaultLitePullConsumer pullConsumer = new DefaultLitePullConsumer(NAMESPACE,groupName, new AclClientRPCHook(new SessionCredentials(AK, SK))); // 设置NameServer的地址 pullConsumer.setNamesrvAddr(NAMESERVER); pullConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); pullConsumer.setAutoCommit(false); pullConsumer.setEnableMsgTrace(true); pullConsumer.setCustomizedTraceTopic(null);Spring Boot Starter 接入(2.2.2版本及以上运行)
DefaultLitePullConsumer pullConsumer = new DefaultLitePullConsumer(NAMESPACE,groupName, new AclClientRPCHook(new SessionCredentials(AK, SK))); // 设置NameServer的地址 pullConsumer.setNamesrvAddr(NAMESERVER); pullConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); pullConsumer.setAutoCommit(false); pullConsumer.setEnableMsgTrace(true); pullConsumer.setCustomizedTraceTopic(null);
消息轨迹查询结果说明
消息轨迹查询出来的结果分为三段:消息生产、消息存储和消息消费。
消息生产
| 参数 | 说明 |
|---|---|
| 生产地址 | 对应生产者的地址以及端口。 |
| 生产时间 | TDMQ RocketMQ 版服务端确认接收到消息的时间,精确到毫秒。 |
| 发送耗时 | 消息从生产端发送到 TDMQ RocketMQ 版服务端的时间消耗,精确到微秒。 |
| 生产状态 | 表示消息生产成功或失败,如果状态为失败一般是消息在发送过程中遇到了头部数据部分丢失,以上几个字段可能会为空值。 |
消息存储
| 参数 | 说明 |
|---|---|
| 存储时间 | 消息被持久化的时间。 |
| 存储状态 | 表示消息持久化成功或失败,如果状态为失败则表明消息未落盘成功,可能由于底层磁盘损坏或无多余容量导致,遇见此类情况需联系技术支持咨询。 |
消息消费
消息消费是以列表形式呈现的,TDMQ RocketMQ 版支持集群消费和广播消费两种消费模式。
列表中展示的信息说明:
| 参数 | 说明 |
|---|---|
| 消费组名称 | 消费组的名称。 |
| 消费模式 | 消费组的消费模式,支持集群消费和广播消费两种模式。 |
| 推送次数 | TDMQ RocketMQ 版服务端向消费者投递该消息的次数。 |
| 最后推送时间 | TDMQ RocketMQ 版服务端最后一次向消费者投递该消息的时间。 |
| 消费结束时间 | TDMQ RocketMQ 版服务端接收到消费者回复确认信息的时间。 |
| 消费耗时 | TDMQ RocketMQ 版服务端第一次向消费者投递该消息到接收到消费者回复确认信息的时间。 |
| 消费状态 | - 已推送未确认:TDMQ RocketMQ 版服务端已向消费者投递消息,未接收到消费者回复的确认消息。 - 已消费:消费者回复确认信息(ACK)到 TDMQ RocketMQ 版服务端,服务端接收到确认信息。 - 转入重试:已超时,服务端仍未接收到确认信息,将再次投递消息。 - 已重试未确认:TDMQ RocketMQ 版服务端已再次向消费者投递消息,未接收到消费者回复的确认消息。 - 已转入死信队列:消息经过一定重试次数后仍未能被正常消费,被投递至死信队列。 说明:如果消费模式为广播模式,则消费状态只有已推送一种。 |
单击订阅名称左方的右三角,查看服务端每次推送消息的详情。
| 参数 | 说明 |
|---|---|
| 推送次序 | TDMQ RocketMQ 版服务端第几次向消费者投递该消息。 |
| 消费地址 | 收到消息的消费者地址及端口。 |
| 开始消费时间 | TDMQ RocketMQ 版服务端向消费者投递该消息的时间。 |
| 消费结束时间 | TDMQ RocketMQ 版服务端接收到消费者回复确认信息的时间。 |
| 消费耗时 | TDMQ RocketMQ 版服务端向消费者投递该消息到接收到消费者回复确认信息的时间。 |
| 消费状态 | - 已推送未确认:TDMQ RocketMQ 版服务端已向消费者投递消息,未接收到消费者回复的确认消息。 - 已消费:消费者回复确认信息(ACK)到 TDMQ RocketMQ 版服务端,服务端接收到确认信息。 - 转入重试:已超时,服务端仍未接收到确认信息,将再次投递消息。 - 已重试未确认:TDMQ RocketMQ 版服务端已再次向消费者投递消息,未接收到消费者回复的确认消息。 - 已转入死信队列:消息经过一定重试次数后仍未能被正常消费,被投递至死信队列。 - 页面死信重投完成:在死信队列重发页面上,用户已经将死信消息重新投递到原队列的重试队列中。 |