编辑: 没心没肺DR 2019-09-27
消息队列 RocketMQ 控制台使用指南 控制台使用指南 消息查询 消息队列 RocketMQ 控制台提供几种消息查询方式用于问题排查.

适用场景 消息队列 RocketMQ 提供了三种消息查询的方式,分别是按 Messag ID,Message Key 以及 Topic 查询. 三种方式的特点和对比如下. 建议查询过程: 查询方式 查询条件 查询类别 说明 按Message ID 查询 Topic+Message ID 精确查询 根据 Topic 和Message ID 可以精确 定位任意一条消息,获 取消息的属性 按Message Key 查询 Topic+Message Key 模糊查询 根据 Topic 和Message Key 可以匹 配到包含指定 Key 的 最近

64 条消息,建议消 息生产方为每条消息设 置尽可能唯一的 Key,以确保相同的 Key 的消息不会超过

64 条,否则消息会漏 查按Topic 查询 Topic+时间段 范围查询 根据 Topic 和时间范 围,批量获取符合条件 的所有消息,查询量大 ,不易匹配 消息队列 RocketMQ 控制台使用指南

1 按Message ID 查询 按Message ID 查询消息属于精确查询,您输入 Topic 和Message ID 即可精确查询到任意一条消息. 因此 ,为了尽可能精确地查询,建议发送方调用 Producer 发送消息时,在发送消息成功后将 Message ID 信息打 印到日志中,方便问题排查. 以Java SDK 为例,获取 Message ID 的方法如下: 查询结果说明 查询到消息后,您可以在消息详情页面看到每条消息的基本属性,消息体下载链接以及消息的消费状态. 其中,投递状态是消息队列 RocketMQ 根据各个 Group ID 的消费进度计算出的结果,投递状态的信息参考以 下表格. 注意:投递状态仅仅是根据消费进度估算的结果,如果需要详细的消费信息,请使用消息轨迹工具查询. 消息 轨迹可以展示该条消息的完整链路,具体请参见查询消息轨迹. 投递状态表 SendResult sendResult = producer.send(msg);

String msgId = sendResult.getMessageId();

投递状态 可能的原因 已订阅,并且消息至少已被消费一次 该Group ID 已经正常消费过这条消息. 已订阅,但消息被过滤表达式过滤,请查看 Tag 该消息的 Tag 不符合消费方的订阅关系,消息被 过滤.您可以进入控制台中的消费者管理,然后单 击该 Group ID 的操作列的消费者状态查询其订阅 关系. 已订阅,但消息未被消费 该Group ID 订阅了该消息,但还未消费.有可能 消息队列 RocketMQ 控制台使用指南

2 - - - - 消费验证 消息队列 RocketMQ 提供了消费验证功能,该功能可以将指定消息推送给指定的在线客户端,以检测客户端消 费该消息的逻辑和结果是否符合预期. 注意:消费验证功能仅仅是用于验证客户端的消费逻辑是否正常,并不会影响正常的收消息流程,因此消息的 消费状态等信息在消费验证后并不会改变. 按Message Key 查询 按Message Key 查询消息的原理是,消息队列 RocketMQ 根据您设置的 Message Key 建立消息的索引信息 ,当您输入 Key 进行查询时,消息队列 RocketMQ 根据该索引即可匹配相关的消息返回. 注意: 按Message Key 查询的条件是用户设置的 Message Key 属性. 按Message Key 查询仅仅返回符合条件的最近的

64 条消息,因此建议您尽可能保证设置的 Key 是 唯一的,并具有业务区分度. 设置 Message Key 的方法如下: 按Topic 查询 按Topic 查询一般用在前两种查询条件都无法获得的情况下,根据 Topic 和消息的发送时间范围,批量获取该 时间范围内的所有消息,然后再找到关心的数据. 注意: 按Topic 查询属于范围查询,获取 Topic 下符合时间条件的所有消息,消息量大,建议尽量缩短查询 区间. 按Topic 查询数据量大,采用分页展示. 是消费过慢,或者消费出现异常导致阻塞. 已订阅,但Group ID 当前不在线,请通过消息轨 迹功能进行精确查询 该Group ID 订阅了该消息,但是不在线.请检查 消费者端应用不在线的原因. 未知异常 出现未收录的异常情况.请提工单进行解决. Message msg = new Message( Topic , * , Hello MQ .getBytes());

/** * 对每条消息设置其检索的 Key,该Key 值代表消息的业务关键属性,请尽可能全局唯一. * 以方便您在无法正常收到消息情况下,可通过消息队列 RocketMQ 控制台查询消息. 不设置也不会影响消息正常收发. */ msg.setKey( TestKey +System.currentTimeMillis());

消息队列 RocketMQ 控制台使用指南

3 消息轨迹 消息轨迹简介 本文档介绍消息队列 RocketMQ 的消息轨迹的基本原理、使用场景、以及使用案例. 注意:目前消息队列 RocketMQ 支持 TCP 协议下的消息轨迹查询. 基本原理 定义:消息轨迹指的是一条消息从生产方发出到消费方消费处理,整个过程中的各个相关节点的时间地点等数 据汇聚而成的完整链路信息. 原理:消息队列 RocketMQ 系统中,一条消息的完整链路包含生产方、服务方、消费方三个角色,每个角色处 理消息的过程中都会在轨迹链路中增加相关的信息,将这些信息汇聚即可获取任意消息当前的状态,从而为生 产环境中的问题排查提供强有力的数据支持. 消息轨迹的数据包含: 消息轨迹查询规则: 生产方信息 消费方信息 服务方信息 生产客户端信息 消费客户端信息 消息所属的 Topic 发送时间 投递时间,投递轮次 消息存储的地域位置 发送成功与否 消费成功与否 消息的 Key 发送耗时 消费耗时 消息的 Tag 消息类型 可以查询的时间 查询说明 普通消息 消息发送后 消息发送之后有发送轨迹,没消 费前显示 尚未消费 .消费后 会展示投递和消费信息. 顺序消息 消息发送后 消息发送之后有发送轨迹,没消 费前显示 尚未消费 .消费后 会展示投递和消费信息. 定时/延时消息 当前系统时间到达消息指定消费 的时间后 当前系统时间没有到达指定消费 的时间,轨迹可以查询到,但是 消息查询不到. 事务消息 消息发送后 消息发送之后有发送轨迹. 事 务未提交之前,轨迹可以查询到 消息队列 RocketMQ 控制台使用指南

4 使用场景 在生产环境的消息收发不符合预期时可以使用消息轨迹工具排查问题. 通过消息的属性(Message ID、 Message Key、Topic)搜索相关的消息轨迹,找到消息的实际收发状态,帮助诊断问题. 示例: 假设您根据业务日志里的信息判断某条消息一直没有没有收到,则可以参考以下步骤,利用消息轨迹来排查消 息队列 RocketMQ 的问题. 收集怀疑的消息的信息,Message ID,Message Key,Topic 以及大概的发送时间. 进入消息队列 RocketMQ 控制台,根据已有的信息创建查询任务,查询相关的消息的轨迹. 查看结果并分析判断原因. 如果轨迹显示尚未消费,则可以去消费者管理页面查询,确认是否有堆 积导致消息尚未消费. 如果发现已经消费,请根据消费端的信息,找到对应的客户端机器和时间,登录查看相关日志. 查询消息轨迹 消息轨迹的使用不会增加额外的接入成本,仅仅需要确保客户端 SDK 版本支持该特性. 正常收发消息后,根 据消息的属性在消息队列 RocketMQ 控制台上查询即可. ,但是消息查询不到. 消息队列 RocketMQ 控制台使用指南

5 - - - - - - - 接入条件 消息轨迹功能目前支持 Java 客户端(1.2.7 版本及以上),C++ 和.NET 客户端. 详细的客户端信息,请参考 控制台给出的升级提示,获取最新的 SDK. 创建轨迹查询任务 在消息队列 RocketMQ 控制台的左侧菜单栏选择消息轨迹,然后单击右上角创建查询任务按钮. 消息轨迹查询功能支持三种查询方式.请选择一种查询方式,然后指定相应的查询条件进行查询. 关于三种查 询方式的具体说明如下: 按Message ID 查询:需要输入消息的唯一 Message ID,Topic 名称以及消息的大致发送时间(一 个时间范围). 按Message Key 查询:需要输入消息的 Message Key 和Topic 以及大致发送时间(一个时间范围 ).该方式适用于没有记录 Message ID,但记录了 Message Key 的场景. 按Topic 查询:仅需要输入 Topic 和消息大致发送时间(一个时间范围),进行批量查询.该方式适 用于没有上述 Message ID 和Message Key,而且消息量比较小的场景. 注意: 查询时,尽可能设置最为精确的时间区间,以便缩小查询范围,提高速度. 按Message ID 查询属于精确查询,速度快,精确匹配,推荐使用. 按Message Key 查询属于模糊查询,仅适用于您没有记录 Message ID 但是设置了 Message Key,同时 Message Key 具有区分度的情况.按Message Key 查询最多查询

1000 条轨迹. 按Topic 查询属于范围查询,不推荐使用,因为时间范围内消息很多,不具备区分度. 管理查询任务 您创建查询任务后,消息队列 RocketMQ 后台会异步执行这个查询任务,并将任务状态反馈到查询任务页面. 查询结束时,任务状态会显示查询完成,否则显示查询中. 您可以根据任务的状态可以选择查看轨迹,或者删除查询任务. 查看消息轨迹 完成查询后,单击详情可查看消息轨迹. 如果发现没有结果,请参考弹窗中的链接,排查原因. 如果查询到轨迹信息,可以看到轨迹的简要信息,主要是消息本身的属性以及接收状态的信息. 查看轨迹链路图 单击详情后,再在展开的页面单击查看轨迹即可查看完整的链路图. 消息队列 RocketMQ 控制台使用指南

6 - - 消息链路图包含3个部分: 生产者信息 Topic 信息 消费者信息 对于 Message Key 和Topic 查询方式,如果匹配到多条轨迹,可以进行上下翻页,查看比对轨迹数 据. 消息轨迹名词解释 消息轨迹链路图中的部分关键字段的解释如下. 状态信息说明 在消息轨迹的任务列表页,点开某任务的详情会显示消息的发送状态和消费状态;

而消息轨迹链路图中的生产 者和消费者信息区域也会分别显示消息的发送和消费状态.这些状态字段及其解释如下. 链路部分 字段 说明 生产者 发送时间 消息从发送端发送时的客户端时 间戳 生产者 发送耗时 发送端调用 send 方法发送消息 的毫秒耗时 Topic Region 消息存储的地域 消费者 耗时 消息推送到客户端之后执行 consumeMessage 方法的耗时 消........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题