RocketMq查看消息轨迹

本文介绍了如何在RocketMQ中通过修改启动文件和客户端代码来开启消息轨迹功能,包括配置broker以记录消息轨迹,以及在producer和consumer中设置开关和自定义Topic。同时概述了如何在控制台查看这些轨迹信息。

查看消息轨迹

1.修改配置文件
broker的启动文件加上消息轨迹相关配置

##if msg tracing is open,the flag will be true
traceTopicEnable=true

2.启动broker
使用broker-a.properties配置文件后台启动Broker。

nohup mqbroker -c /usr/local/rocketmq/rocketmq-all-4.9.1-bin-release/conf/2m-2s-async/broker-a.properties & 

3.rocketmq-client代码改动如下

  1. 发送消息时开启消息轨迹
    enableMsgTrace增加一个开关参数(enableMsgTrace)来实现消息轨迹是否开启;
    customizedTraceTopic新增一个自定义参数(customizedTraceTopic)来实现用户存储消息轨迹数据至自己创建的用户级Topic
DefaultMQProducer producer = new DefaultMQProducer("Producer",true,"gj"); //(1)
  1. 订阅消息时开启消息轨迹
    enableMsgTrace增加一个开关参数(enableMsgTrace)来实现消息轨迹是否开启;
    customizedTraceTopic新增一个自定义参数(customizedTraceTopic)来实现用户存储消息轨迹数据至自己创建的用户级Topic
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("Consumer",true,"gj");

4.控制台查看消息轨迹
在这里插入图片描述
在这里插入图片描述

RocketMQ 的使用过程中,消息轨迹(Message Trace)功能对于排查消息投递路径、分析消息状态等具有重要作用。然而,在某些部署或配置情况下,`rocketmq-dashboard` 中的消息轨迹功能可能无法正常使用。 ### 问题表现 用户在访问 `rocketmq-dashboard` 时,尝试查看某条消息轨迹信息,但页面无响应或提示“消息轨迹不可用”。这通常与以下几个因素有关: - **消息轨迹数据未启用**:默认情况下,RocketMQ 可能并未开启消息轨迹记录功能。 - **Broker 配置缺失或错误**:需要在 Broker 级别启用消息轨迹,并正确配置相关参数。 - **NameServer 或 Topic 配置问题**:部分配置项如未正确设置,可能导致轨迹数据无法上报。 - **Dashboard 版本兼容性问题**:不同版本的 Dashboard 对轨迹数据的支持程度不同,可能存在兼容性问题。 ### 解决方案 #### 1. 启用消息轨迹功能 确保在 Broker 启动时开启了消息轨迹功能。可以在 `broker.conf` 中添加以下配置: ```properties msgTraceTopicName=RMQ_SYS_TRACE_TOPIC traceTopicEnable=true ``` 其中: - `msgTraceTopicName` 指定用于存储轨迹数据的 Topic 名称,默认为 `RMQ_SYS_TRACE_TOPIC`。 - `traceTopicEnable` 控制是否启用消息轨迹功能,设为 `true` 表示启用[^2]。 #### 2. Producer 和 Consumer 开启轨迹追踪 在生产者和消费者端,需显式开启轨迹追踪支持。例如: ```java // 生产者端 DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", true); ``` ```java // 消费者端 DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroupName", true); ``` 构造函数中的第二个参数为 `enableMsgTrace`,设为 `true` 即可开启消息轨迹追踪功能[^1]。 #### 3. 校验 Topic 配置 确保 `RMQ_SYS_TRACE_TOPIC` 已被自动创建或手动创建,并且该 Topic 在所有 Broker 上均可用。可通过命令行工具检查: ```bash mqadmin topicList -n localhost:9876 ``` 若未发现该 Topic,可通过以下命令手动创建: ```bash mqadmin updateTopic -t RMQ_SYS_TRACE_TOPIC -n localhost:9876 -c DefaultCluster ``` #### 4. 检查 Dashboard 配置及版本 确认所使用的 `rocketmq-dashboard` 支持当前 RocketMQ 版本的消息轨迹展示。建议使用较新版本的 Dashboard(如 2.x 以上),并确保其连接的 NameServer 地址正确。 可在 `application.yml` 中配置如下参数: ```yaml rocketmq: config: namesrvAddr: 127.0.0.1:9876 traceTopicName: RMQ_SYS_TRACE_TOPIC ``` 确保 `namesrvAddr` 正确指向实际运行的 NameServer 地址,`traceTopicName` 与 Broker 配置一致[^3]。 #### 5. 查看日志排查异常 如果上述步骤完成后仍无法查看消息轨迹,应检查以下日志文件: - Broker 日志:查看是否有关于轨迹数据写入失败的日志。 - Dashboard 日志:检查是否有查询轨迹数据时的异常堆栈。 - 消息轨迹 Topic 数据是否正常写入。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值