消息队列RocketMQ版:消费异常运维排查体验

简介: 本实验场景介绍消息队列RocketMQ版的可观测工具功能,通过示例程序模拟生产环境消费业务故障,并通过产品提供的开箱即用的可观测工具定位消费异常。

消息队列RocketMQ版:消费异常运维排查体验

1. 创建实验资源

开始实验之前,您需要先创建云服务器ECS实例和消息队列RocketMQ版实例。

  1. 在实验室页面,单击创建资源

说明:资源创建过程需要3~5分钟,请耐心等待。

  1. (可选)在实验室页面左侧导航栏中,单击云产品资源列表, 可查看本次实验资源相关信息(例如ECS的IP地址、用户信息等)。


2. 创建RocketMQ Topic、Group资源

本步骤将指导您在RocketMQ实例上创建用于收发消息的Topic和Group资源。

  1. 双击打开远程桌面的Chronmium网页浏览器。
  2. 在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,单击登录
  3. 复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问消息队列RocketMQ版控制台。
https://ons.console.aliyun.com/overview
  1. 在左侧导航栏中,单击实例列表

  1. 实例列表页面顶部菜单栏中,切换到资源所在地域,例如华东1(杭州)。

说明:您可在云产品资源列表中查看消息队列RocketMQ版资源所在地域。

  1. 在实例列表页面,找到实验室分配的消息队列RocketMQ版实例,单击实例ID

说明:您可在云产品资源列表中查看消息队列RocketMQ版的实例ID。

  1. 在左侧导航栏中,单击Topic管理

  1. Topic管理页面,单击创建Topic

  1. 创建Topic面板,根据如下说明配置参数,然后单击确定
  • 主题名称:输入Topic名称,例如demo_topic。
  • 消息类型:本实验是基本消息收发体验,请选择普通消息
  • 描述:输文字描述,用于标识这个topic的作用,例如test。

  1. 在左侧导航栏中,单击Group管理。

  1. Group管理页面,单击创建Group

  1. 创建Group面板,根据如下说明配置参数,然后单击确定
  • GroupID:输入Group名称,例如demo_group。
  • 投递顺序性:本实验是基本消息收发体验,请选择并发投递
  • 描述:输文字描述,用于标识这个group的作用,例如test。

3. 登录云服务器ECS,运行故障模拟程序

本步骤将指导您如何体验定时消息收发程序。

  1. 在实验室页面右侧功能栏中,单击 图标,切换至Web Terminal,自动连接到云服务器ECS。

  1. 执行如下命令,运行消息收发故障模拟程序,为降低体验复杂度,该程序中同时集成了生产和消费的业务逻辑。

说明:在本实验中,已在云服务器ECS中为您准备好Demo代码。

java -cp demo.jar -Dendpoints=xxx:8080  -Dtopic=xxx -Dgroup=xxx   workshop.ConsumeLagDemo

其中,命令中的部分参数需要根据测试的实例资源的实际信息输入。

参数

说明

-Dendpoints

实例接入点信息。在RocketMQ控制台>实例详情>TPC协议接入点>VPC专有网络的接入点信息中查看。

在本实验中,为了方便用户的操作,您可在云产品资源列表中查到VPC专有网络的接入点信息。

VPC专有网络的接入点信息格式一般为rmq-cn-{xxx}-vpc.cn-{xxx}.rmq.aliyuncs.com:8080。

说明:您可在云产品资源列表中查看VPC接入点信息,复制粘贴即可。

-Dtopic

实际发送的主题名称,输入步骤二创建的Topic名称。

-Dgroup

实际订阅消费使用的消费者分组,输入步骤二创建的Group名称。

-Dnum

输入希望发送的消息条数,例如10,代表10条消息。

预期的输出结果如下。

4. 使用消息轨迹等工具分析故障

上述步骤三模拟的是生产环境经常出现的一种故障场景,即消费方下游业务因数据库慢SQL等原因造成消费阻塞且出现了消费失败的场景。

在该场景下,虽然RocketMQ会对失败消息重新投递消费,但消费速度已经变慢产生堆积,业务需要及时排查消费慢和消费失败的原因。

在该场景下,业务方唯一知道的是业务订单没有正确处理,手上只有订单Id信息。因此借助RocketMQ消息轨迹功能可以快速定位当前消息的链路情况,并判断问题出在哪台机器。

  1. 在实验室页面右侧功能栏中,单击图标,切换至远程桌面。

  1. 在左侧导航栏中,单击消息轨迹

  1. 在消息轨迹页面,单击创建查询任务

  1. 创建消息查询轨迹任务面板,Topic选择您在步骤二创建的Topic名称,时间范围选择最近十分钟,查询方式选择Message Key查询,在本实验中已经将订单Id设置为Message Key,因此在Message Key中可以输入订单Id查询轨迹,本实验中订单ID为OrderId_0,单击查询

在命令行中您可查看到订单ID信息。

  1. 等待查询结果,查询需要耗时大概1-2分钟。

预期的输出结果如下。

  1. 查询结果页面,单击右侧操作列下的消息轨迹

  1. 轨迹详情页面,单击消费者区域中的Group名称,例如本实验中单击demo_group

返回如下页面,您可查询消息的收发详情过程。

  1. 基于上述操作步骤,可以看出,RocketMQ消息轨迹功能可以帮助业务快速定位到某条链路的完整过程,从生产到消费的过程中的机器、时间、处理过程、处理结果都和步骤三中模拟的情况一致。在生产环境中可以进一步登录机器排查消费失败和慢的原因。

实验链接:https://developer.aliyun.com/adc/scenario/5047b5418f5349bcbd18ed69da2a135a

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
消息中间件 运维 Kafka
运维排查 | Systemd 之服务停止后状态为 failed
运维排查 | Systemd 之服务停止后状态为 failed
|
9天前
|
消息中间件 运维 安全
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
在 2024 年云栖大会上,阿里云智能集团产品专家刘尧全面介绍了云消息队列 ApsaraMQ Serverless 的落地成果和产品进展。此外,我们还邀请到杭州优行科技有限公司中间件消息研发负责人王智洋,分享了 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。
|
2月前
|
运维 安全 网络协议
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
142 0
|
3月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
4月前
|
消息中间件 存储 负载均衡
消息队列 MQ产品使用合集之如何排查是哪个队列导致的异常TPS增加
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
10月前
|
消息中间件 数据库连接 数据库
py 多进程 引发的 各种数据库连接 消息队列连接 异常问题 简单分析
py 多进程 引发的 各种数据库连接 消息队列连接 异常问题 简单分析
61 0
|
3月前
|
消息中间件 C语言 RocketMQ
消息队列 MQ操作报错合集之出现"Connection reset by peer"的错误,该如何处理
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
19天前
|
消息中间件
手撸MQ消息队列——循环数组
队列是一种常用的数据结构,类似于栈,但采用先进先出(FIFO)的原则。生活中常见的排队场景就是队列的应用实例。在数据结构中,队列通常用数组实现,包括入队(队尾插入元素)和出队(队头移除元素)两种基本操作。本文介绍了如何用数组实现队列,包括定义数组长度、维护队头和队尾下标(front 和 tail),并通过取模运算解决下标越界问题。此外,还讨论了队列的空与满状态判断,以及并发和等待机制的实现。通过示例代码展示了队列的基本操作及优化方法,确保多线程环境下的正确性和高效性。
24 0
手撸MQ消息队列——循环数组
|
2月前
|
消息中间件 存储 缓存
一个用过消息队列的人,竟不知为何要用 MQ?
一个用过消息队列的人,竟不知为何要用 MQ?
91 1

相关产品

  • 云消息队列 MQ
  • 下一篇
    无影云桌面