消息队列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
相关文章
|
Java
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
361 0
|
24天前
|
消息中间件 运维 UED
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
27 1
|
7月前
|
消息中间件 监控 Java
Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
490 0
|
3月前
|
消息中间件 运维 安全
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
在 2024 年云栖大会上,阿里云智能集团产品专家刘尧全面介绍了云消息队列 ApsaraMQ Serverless 的落地成果和产品进展。此外,我们还邀请到杭州优行科技有限公司中间件消息研发负责人王智洋,分享了 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。
169 7
|
4月前
|
运维 安全 网络协议
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
278 0
|
5月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
6月前
|
消息中间件 存储 负载均衡
消息队列 MQ产品使用合集之如何排查是哪个队列导致的异常TPS增加
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
7月前
|
弹性计算 物联网 网络性能优化
MQTT常见问题之connection reset by peer 异常如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
7月前
|
消息中间件 物联网 定位技术
MQTT常见问题之使用 MQTT实例会报异常如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
7月前
|
消息中间件 RocketMQ 容器
rocketmq导致程序异常退出
2024-03-01 11:36:02.516 [Thread-7] INFO o.s.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method failed on bean with name 'rocketMQTemplate': java.lang.IllegalStateException: Shutdown in progress 2024-03-01 11:36:02.517 [Thread-7] INFO o.s.beans.factory.support.DisposableBean

相关产品

  • 云消息队列 MQ