消息轨迹与说明

最近更新时间:2023-05-24 10:03:51

我的收藏
消息轨迹记录了消息从生产端到 TDMQ RocketMQ 版服务端,最后到消费端的整个过程,包括各阶段的时间(精确到微秒)、执行结果、生产者 IP、消费者 IP 等。

前提条件

已经参考 SDK 文档 部署好生产端和消费端服务,并在3天内有消息生产和消费。
需要在客户端来设置开启消息轨迹功能,具体设置示例如下:
生产者设置
push 消费者设置
pull 消费者设置
DefaultMQProducer producer = new DefaultMQProducer(namespace, groupName,
// ACL权限
new AclClientRPCHook(new SessionCredentials(AK, SK)), true, null);
// 实例化消费者
DefaultMQPushConsumer pushConsumer = new DefaultMQPushConsumer(NAMESPACE,groupName,
new AclClientRPCHook(new SessionCredentials(AK, SK)),
new AllocateMessageQueueAveragely(), true, null);
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版本及以上),具体的代码参考:
package com.lazycece.sbac.rocketmq.messagemodel;

import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

/**
* @author lazycece
* @date 2019/8/21
*/
@Slf4j
@Component
public class MessageModelConsumer {

@Component
@RocketMQMessageListener(
topic = "topic-message-model",
consumerGroup = "message-model-consumer-group",
enableMsgTrace = true,
messageModel = MessageModel.CLUSTERING)
public class ConsumerOne implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
log.info("ConsumerOne: {}", message);
}
}

}


操作步骤

1. 登录 TDMQ RocketMQ 控制台,在左侧导航栏单击消息查询
2. 在消息查询页面,选择好地域后根据页面提示输入查询条件。
时间范围:选择需要查询的时间范围,支持近6小时,近24小时,近3天和自定义时间范围。
当前集群:选择需要查询的 Topic 所在的集群。
命名空间:选择需要查询的 Topic 所在的命名空间。
Topic:选择需要查询的 Topic。
查询方式:消息查询功能支持两种查询方式。
按消息 ID 查询:该方式属于精确查询、速度快、精确匹配。
按消息 Key 查询:该方式属于模糊查询,适用于您没有记录消息 ID 但是设置了消息 Key 的场景。
3. 单击查询,下方列表会展示所有查询到的结果并分页展示。
4. 单击操作列的查看消息轨迹,或者在详情页单击 Tab 栏的消息轨迹,即可查看该消息的消息轨迹。

消息轨迹查询结果说明

消息轨迹查询出来的结果分为三段:消息生产、消息存储和消息消费。

消息生产

参数
说明
生产地址
对应生产者的地址以及端口。
生产时间
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 版服务端已向消费者投递消息,未接收到消费者回复的确认消息。
已确认:消费者回复确认信息(ACK)到 TDMQ RocketMQ 版服务端,服务端接收到确认信息。
转入重试:已超时,服务端仍未接收到确认信息,将再次投递消息。
已重试未确认:TDMQ RocketMQ 版服务端已再次向消费者投递消息,未接收到消费者回复的确认消息。
已转入死信队列:消息经过一定重试次数后仍未能被正常消费,被投递至死信队列。
页面死信重投完成:在死信队列重发页面上,用户已经将死信消息重新投递到原队列的重试队列中。