如果我们的业务系统中使用到了RocketMQ来进行消息处理,在生产环境中可能就会遇到消息数据的丢失,某个应该被正常处理的消息,业务系统并没有接收到,导致生产环境出现问题。要排查类似这种线上问题,我们就需要了解这个消息的轨迹,需要知道这个消息是什么时候、从哪个Producer发送过来的?它在Broker端是进入到了哪个Topic里去的?它在消费者层面是被哪个Consumer在什么时候消费的?所以此时就可以使用RocketMQ支持的消息轨迹功能,我们看下面的配置过程。
首先需要在broker的配置文件里开启消息轨迹追踪的功能:
traceTopicEnable=true
当我们开启了上述的选项之后,我们启动这个Broker的时候会自动创建出来一个内部的Topic,就是RMQ_SYS_TRACE_TOPIC,这个Topic就是用来存储所有的消息轨迹追踪的数据的。
做好上述这一切事情之后,我们需要在发送消息的时候开启消息轨迹,此时创建Producer的时候要用如下的方式,下面构造函数中的第二个参数,就是enableMsgTrace参数,他设置为true,就是说可以对消息开启轨迹追踪。
DefaultMQProducer producer = new DefaultMQProducer(</