消息队列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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
29天前
|
消息中间件 运维 Kafka
运维排查 | Systemd 之服务停止后状态为 failed
运维排查 | Systemd 之服务停止后状态为 failed
|
7月前
|
Java
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
134 0
|
3月前
|
消息中间件 监控 Java
Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
73 0
|
2月前
|
弹性计算 物联网 网络性能优化
MQTT常见问题之connection reset by peer 异常如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
2月前
|
消息中间件 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
|
8月前
|
消息中间件 运维 Java
RocketMQ的常规运维实践应用
RocketMQ的常规运维实践应用
483 1
|
6月前
|
消息中间件 容器
RabbitMQ异常重启,部分消费队列不消费问题
RabbitMQ异常重启,部分消费队列不消费问题
114 0
|
8月前
|
消息中间件 运维 Prometheus
RocketMQ运维自我实践
这一节不会讲解知识点,会提出一些常见的运维问题,读者需要自行翻找答案。有问题可以群里咨询
598 0
RocketMQ运维自我实践
|
9月前
|
运维 Linux 开发工具
【运维知识基础篇】如何用Xshell连接VMware虚拟机及排查问题(二)
【运维知识基础篇】如何用Xshell连接VMware虚拟机及排查问题(二)
96 0
|
9月前
|
运维 安全 Linux
【运维知识基础篇】如何用Xshell连接VMware虚拟机及排查问题(一)
【运维知识基础篇】如何用Xshell连接VMware虚拟机及排查问题
161 0

相关产品

  • 云消息队列 MQ