42 线上生产环境的RocketMQ集群进行消息轨迹的追踪

Posted 鮀城小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了42 线上生产环境的RocketMQ集群进行消息轨迹的追踪相关的知识,希望对你有一定的参考价值。

1. 消息轨迹

RocketMQ支持在生产环境里查询一条消息的轨迹。

总得来说,我们可以知道一个消息是什么时候从哪个Producer发送出来的?它在Broker端是进入到了哪个Topic里去的?它在消费者层面是被哪个Consumer什么时候消费出来的?

2.消息轨迹的开启配置

想要使用上面说到的RocketMQ支持的消息轨迹功能,主要配置过程如下:

首先需要在broker的配置文件里开启: traceTopicEnable=true 选项,此时就会开启消息轨迹追踪的功能。

开启以上配置项后,在启动该 broker 的时候会自动创建出来一个内部的 Topic ,也就是 RMQ_SYS_TRACE_TOPIC,这个Topic就是用来存储所有的消息轨迹追踪的数据的。

接着,需要在发送消息的时候开启消息轨迹,,此时创建Producer的时候采用如下方式:

DefaultMQProducer producer = new DefaultMQProducer("TestProducerGroup",true);

以上代码中,构造函数中的第二个参数,就是 enableMsgTrace参数,它设值为 true,就是说可以对消息开启轨迹追踪。

在订阅消息的时候,对于Consumer也是同理的,在构造函数的第二个参数设置为true,就是开启了消费时候的轨迹追踪。

3.消息轨迹的原理

在Broker、Producer、Consumer都配置好了轨迹追踪之后,Producer在发送消息的时候,就会上报这个消息的一些数据到内置的 RMQ_SYS_TRACE_TOPIC里去,它会上报如下的一些数据:Producer的消息、发送消息的时间、消息是否发送成功、发送消息的耗时。

接着消息到Broker端之后,Broker端也会记录消息的轨迹数据,包括如下:消息存储的Topic、消息存储的位置、消息的 key、消息的tags。

最后当消息被消费到Consumer端之后,它也会上报一些轨迹数据到内置的 RMQ_SYS_TRACE_TOPIC 里去,包括如下一些东西:Consumer的信息、投递消息的时间、这是第几轮投递消息、消息消费是否成功、消费这条消息的耗时。

4.查询消息轨迹

在RocketMQ控制台里,在导航栏就有一个消息轨迹,在里面可以创建查询任务,可以根据messageId、message key或者Topic来查询,查询任务执行完毕之后,就可以看到消息轨迹的界面了。

以上是关于42 线上生产环境的RocketMQ集群进行消息轨迹的追踪的主要内容,如果未能解决你的问题,请参考以下文章

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

配置开发环境测试环境线上生产环境

线上生产环境部署Djngao+Nginx+Uwsgi

TFS线上生成环境发布历程

线上生产环境同步时间服务器时报错the NTP socket is in use, exiting

git开发部署流程