在分布式应用中,云消息队列 RocketMQ 版作为全链路中异步解耦的关键服务,提供的消息轨迹数据可有效将业务上下游信息串联起来,帮助您更好地排查异常信息,定位问题。本文介绍消息轨迹的使用场景、云消息队列 RocketMQ 版定义的轨迹参数以及如何查看消息轨迹。

使用场景

云消息队列 RocketMQ 版将消息收发流程中的关键数据定义为轨迹参数,并支持可视化查询,通过查看轨迹信息可快速获取当前业务处理的状态,帮助您快速定位异常问题。

消息轨迹的典型应用场景如下:
  • 场景一:查看某条消息是否发送成功或是否消费成功。
  • 场景二:查看定时/延时消息是否定时结束。
  • 场景三:查看事务消息是否已提交或回滚。
  • 场景四:查看生产者、消费者身份信息和机器信息,进一步排查问题原因。

轨迹参数说明

云消息队列 RocketMQ 版提供的轨迹参数如下:

属性分类轨迹参数说明
生产者生产者信息生产者发送消息时使用的RocketMQ账号或Access Key ID。
主机名生产者客户端所在机器的主机名称。
发送时间生产者发送消息的起始时间。
到达Server时间消息到达并存储到云消息队列 RocketMQ 版服务端的时间。
发送结果消息发送的结果。取值如下:
  • 成功
  • 失败
消息基础信息消息类型
消息ID消息的全局唯一标识,由云消息队列 RocketMQ 版系统自动生成。
Topic消息所属的主题名称。
消息KeysMessageKey,消息的业务标识,由消息生产者设置,唯一标识某个业务逻辑。
消息Tag消息标签,用于区分指定主题下的消费分类。
顺序消息MessageGroup顺序消息中,消息所属的MessageGroup,由生产者设置。同一MessageGroup的消息将遵循先进先出的顺序关系进行处理。
事务消息Check回调时间半事务消息检查事务状态的回调时间。
提交时间事务消息被服务端提交给消费者消费的时间。
回滚时间事务消息回滚的时间。
定时消息预设定时时间定时消息的定时时间。
消费者本次消费结果消息某次消费的消费结果。取值如下:
  • 消费成功
  • 消费失败
  • 未返回应答
消费者信息消费者订阅消息时使用的RocketMQ账号或AccessKey ID。
主机名消费者客户端所在机器的主机名。
是否顺序投递消费者所属的消费者分组是否开启顺序消费。
投递时间云消息队列 RocketMQ 版服务端将消息投递给消费者的时间。
应答时间云消息队列 RocketMQ 版收到消费者返回的消费结果的时间。
invisibleDurationSimpleConsumer传入的消息不可见时间。更多信息,请参见SimpleConsumer消费重试策略
修改不可见时间SimpleConsumer调用ChangeInvisibleDuration接口的时间。
进死信时间消息消费失败被投递至死信队列的时间。

使用限制

RocketMQ 4.x/3.x版本的SDK客户端默认不开启消息轨迹功能,您需要在消息收发代码中开启消息轨迹功能,才能在控制台查询到消息的轨迹信息。具体配置如下:
  • 生产者
    producer.setAccessChannel(AccessChannel.CLOUD);
  • 消费者
    consumer.setAccessChannel(AccessChannel.CLOUD);

计费说明

云消息队列 RocketMQ 版免费提供消息轨迹存储和查询功能。

消息轨迹存储时长

消息轨迹在云消息队列 RocketMQ 版服务端的保存时间为3天,因此,您可以查询从当前时刻起3天内的消息轨迹。

消息轨迹查询方式

云消息队列 RocketMQ 版支持以下查询方式:
  • 按Message ID查询:该方式属于精确查询,速度快、精确匹配,推荐使用。
  • 按Message Key查询:该方式属于模糊查询,最多查询1000条轨迹。仅适用于您没有记录Message ID但是设置了Message Key,同时Message Key具有区分度的情况。
  • 按Topic 查询:该方式属于范围查询,适用于没有上述Message ID和Message Key,而且消息量比较小的场景。因为时间范围内消息很多,且不具备区分度,所以不推荐使用。

查询消息轨迹

  1. 登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表
  2. 在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
  3. 在左侧导航栏单击消息轨迹,然后在消息轨迹页面选择任一查询方式创建查询任务。
  4. 根据任务结果查看详细消息轨迹信息。