目前 MQ 支持 TCP 和 HTTP 协议下的消息轨迹查询。
基本原理
定义:消息轨迹指的是一条消息从生产方发出到消费方消费处理,整个过程中的各个相关节点的时间地点等数据汇聚而成的完整链路信息。
原理:MQ 系统中,一条消息的完整链路包含生产方、服务方、消费方三个角色,每个角色处理消息的过程中都会在轨迹链路中增加相关的信息,将这些信息汇聚即可获取任意消息当前的状态,从而为生产环境中的问题排查提供强有力的数据支持。
消息轨迹的数据包含:
生产方信息 消费方信息 服务方信息
生产客户端信息 消费客户端信息 消息存储位置信息
发送时间 投递时间,投递轮次 消息存储时间
发送成功与否 消费成功与否 消息本身的属性
发送耗时 消费耗时 -
消息轨迹查询规则:
消息类型 可以查询的时间 查询说明
普通消息 消息发送后 消息发送之后有发送轨迹,没消费前提示没有消费。消费后会展示拉取和消费。
顺序消息 消息发送后 消息发送之后有发送轨迹,没消费前提示没有消费。消费后会展示拉取和消费。
定时/延时消息 当前时间到达消息指定消费的时间 当前时间没有到达指定消费的时间,轨迹可以查询到,但是消息查询不到。
事务消息 消息发送后 消息发送之后有发送轨迹。事务未提交之前,轨迹可以查询到,但是消息查询不到。
使用场景
在生产环境的消息收发不符合预期时可以使用消息轨迹工具排查问题。通过消息的属性(Message ID、Message Key、Topic)搜索相关的消息轨迹,找到消息的实际收发状态,帮助诊断问题。
trace
示例
假设业务方根据业务日志里的信息判断某条消息一直没有没有收到,则可以参考以下步骤,利用消息轨迹来排查 MQ 问题。
收集怀疑的消息的信息,Message ID,Message Key,Topic 以及大概的发送时间范围。
进入 MQ 控制台,根据已有的信息新建查询任务,查询相关的消息的轨迹。
查看结果并分析判断原因。如果轨迹显示尚未消费,则可以去订阅管理页面查询,确认是否有堆积导致消息尚未消费。
如果发现已经消费,请根据消费端的信息,找到对应的客户端机器和时间,登录查看相关日志。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。