全部产品
阿里云办公

消息轨迹简介

更新时间:2018-08-31 14:43:04

本文档介绍 MQ 消息轨迹的基本原理、使用场景、以及使用案例。

注意:目前 MQ 支持 TCP 协议下的消息轨迹查询。

基本原理

定义:消息轨迹指的是一条消息从生产方发出到消费方消费处理,整个过程中的各个相关节点的时间地点等数据汇聚而成的完整链路信息。

原理:MQ 系统中,一条消息的完整链路包含生产方、服务方、消费方三个角色,每个角色处理消息的过程中都会在轨迹链路中增加相关的信息,将这些信息汇聚即可获取任意消息当前的状态,从而为生产环境中的问题排查提供强有力的数据支持。

消息轨迹的数据包含:

生产方信息 消费方信息 服务方信息
生产客户端信息 消费客户端信息 消息所属的 Topic
发送时间 投递时间,投递轮次 消息存储的地域位置
发送成功与否 消费成功与否 消息的 Key
发送耗时 消费耗时 消息的 Tag

消息轨迹查询规则:

消息类型 可以查询的时间 查询说明
普通消息 消息发送后 消息发送之后有发送轨迹,没消费前显示”尚未消费“。消费后会展示投递和消费信息。
顺序消息 消息发送后 消息发送之后有发送轨迹,没消费前显示”尚未消费“。消费后会展示投递和消费信息。
定时/延时消息 当前系统时间到达消息指定消费的时间后 当前系统时间没有到达指定消费的时间,轨迹可以查询到,但是消息查询不到。
事务消息 消息发送后 消息发送之后有发送轨迹。 事务未提交之前,轨迹可以查询到,但是消息查询不到。

使用场景

在生产环境的消息收发不符合预期时可以使用消息轨迹工具排查问题。 通过消息的属性(Message ID、Message Key、Topic)搜索相关的消息轨迹,找到消息的实际收发状态,帮助诊断问题。

trace

示例:

假设您根据业务日志里的信息判断某条消息一直没有没有收到,则可以参考以下步骤,利用消息轨迹来排查 MQ 问题。

  1. 收集怀疑的消息的信息,Message ID,Message Key,Topic 以及大概的发送时间。

  2. 进入 MQ 控制台,根据已有的信息创建查询任务,查询相关的消息的轨迹。

  3. 查看结果并分析判断原因。 如果轨迹显示尚未消费,则可以去消费者管理页面查询,确认是否有堆积导致消息尚未消费。

  4. 如果发现已经消费,请根据消费端的信息,找到对应的客户端机器和时间,登录查看相关日志。