RocketMQ集群如何打开消息轨迹的追踪?
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ集群如何打开消息轨迹的追踪?相关的知识,希望对你有一定的参考价值。
RocketMQ集群如何打开消息轨迹的追踪?
对于一个消息,我想要知道,这个消息是什么时候从哪个Producer发送出来的?他在Broker端是进入到了哪个Topic里去的?他在消费者层面是被哪个Consumer什么时候消费出来的?
一、操作
我们有时候对于一条消息的丢失,可能就想要了解到这样的一个消息轨迹,协助我们去进行线上问题的排查,所以此时就可以使用RocketMQ支持的消息轨迹功能,我们看下面的配置过程。
首先需要在broker的配置文件
里开启traceTopicEnable=true
这个选项,
此时就会开启消息轨迹追踪的功能。
接着当我们开启了上述的选项之后,我们启动这个Broker的时候会自动创建出来一个内部的Topic,就是RMQ_SYS_TRACE_TOPIC,这个Topic就是用来存储所有的消息轨迹追踪的数据
的。
接着做好上述这一切事情之后,我们需要在发送消息的时候开启消息轨迹,此时创建Producer的时候要用如下的方式,下面构造函数中的第二个参数,就是enableMsgTrace
参数,他设置为true
,就是说可以对消息开启轨迹追踪。
在订阅消息的时候,对于Consumer也是同理的,在构造函数的第二个参数设置为true,就是开启了消费时候的轨迹追踪。
思考一下:
一旦当我们在Broker、Producer、Consumer都配置好了轨迹追踪之后,其实Producer在发送消息的时候,就会上报这个消息的一些数据到内置的RMQ_SYS_TRACE_TOPIC里去此时会上报如下的一些数据:`Producer的信息、发送消息的时间、消息是否发送成功、发送消息的耗时。
.
接着消息到Broker端之后,Broker端也会记录消息的轨迹数据,包括如下:消息存储的Topic、消息存储的位置、消息的key、消息的tags。
.
然后消息被消费到Consumer端之后,他也会上报一些轨迹数据到内置的RMQ_SYS_TRACE_TOPIC里去,包括如下一些东西:
Consumer的信息、投递消息的时间、这是第几轮投递消息、消息消费是否成功、消费这条消息的耗时。
查询消息轨迹:
接着如果想要查询消息轨迹,也很简单,在RocketMQ控制台
里,在导航栏里就有一个消息轨迹,在里面可以创建查询任务,你可以根据messageId、message key或者Topic来查询,查询任务执行完毕之后,就可以看到消息轨迹的界面了。
在消息轨迹的界面里就会展示出来刚才上面说的Producer、Broker、Consumer上报的一些轨迹数据了。
以上是关于RocketMQ集群如何打开消息轨迹的追踪?的主要内容,如果未能解决你的问题,请参考以下文章
精讲高并发异步解耦利器RocketMQ技术架构,及运行原理,及分析RocketMQ究竟强在哪里?RocketMQ集群是如何做数据分区的?如何做数据分区的?
精讲高并发异步解耦利器RocketMQ技术架构,及运行原理,及分析RocketMQ究竟强在哪里?RocketMQ集群是如何做数据分区的?如何做数据分区的?