消息队列RocketMQ版:消费异常运维排查体验
1. 创建实验资源
开始实验之前,您需要先创建云服务器ECS实例和消息队列RocketMQ版实例。
- 在实验室页面,单击创建资源。
说明:资源创建过程需要3~5分钟,请耐心等待。
- (可选)在实验室页面左侧导航栏中,单击云产品资源列表, 可查看本次实验资源相关信息(例如ECS的IP地址、用户信息等)。
2. 创建RocketMQ Topic、Group资源
本步骤将指导您在RocketMQ实例上创建用于收发消息的Topic和Group资源。
- 双击打开远程桌面的Chronmium网页浏览器。
- 在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码到用户密码输入框,单击登录。
- 复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问消息队列RocketMQ版控制台。
https://ons.console.aliyun.com/overview
- 在左侧导航栏中,单击实例列表。
- 在实例列表页面顶部菜单栏中,切换到资源所在地域,例如华东1(杭州)。
说明:您可在云产品资源列表中查看消息队列RocketMQ版资源所在地域。
- 在实例列表页面,找到实验室分配的消息队列RocketMQ版实例,单击实例ID。
说明:您可在云产品资源列表中查看消息队列RocketMQ版的实例ID。
- 在左侧导航栏中,单击Topic管理。
- 在Topic管理页面,单击创建Topic。
- 在创建Topic面板,根据如下说明配置参数,然后单击确定。
- 主题名称:输入Topic名称,例如demo_topic。
- 消息类型:本实验是基本消息收发体验,请选择普通消息。
- 描述:输文字描述,用于标识这个topic的作用,例如test。
- 在左侧导航栏中,单击Group管理。
- 在Group管理页面,单击创建Group。
- 在创建Group面板,根据如下说明配置参数,然后单击确定。
- GroupID:输入Group名称,例如demo_group。
- 投递顺序性:本实验是基本消息收发体验,请选择并发投递。
- 描述:输文字描述,用于标识这个group的作用,例如test。
3. 登录云服务器ECS,运行故障模拟程序
本步骤将指导您如何体验定时消息收发程序。
- 在实验室页面右侧功能栏中,单击 图标,切换至Web Terminal,自动连接到云服务器ECS。
- 执行如下命令,运行消息收发故障模拟程序,为降低体验复杂度,该程序中同时集成了生产和消费的业务逻辑。
说明:在本实验中,已在云服务器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消息轨迹功能可以快速定位当前消息的链路情况,并判断问题出在哪台机器。
- 在实验室页面右侧功能栏中,单击图标,切换至远程桌面。
- 在左侧导航栏中,单击消息轨迹。
- 在消息轨迹页面,单击创建查询任务。
- 在创建消息查询轨迹任务面板,Topic选择您在步骤二创建的Topic名称,时间范围选择最近十分钟,查询方式选择Message Key查询,在本实验中已经将订单Id设置为Message Key,因此在Message Key中可以输入订单Id查询轨迹,本实验中订单ID为OrderId_0,单击查询。
在命令行中您可查看到订单ID信息。
- 等待查询结果,查询需要耗时大概1-2分钟。
预期的输出结果如下。
- 在查询结果页面,单击右侧操作列下的消息轨迹。
- 在轨迹详情页面,单击消费者区域中的Group名称,例如本实验中单击demo_group。
返回如下页面,您可查询消息的收发详情过程。
- 基于上述操作步骤,可以看出,RocketMQ消息轨迹功能可以帮助业务快速定位到某条链路的完整过程,从生产到消费的过程中的机器、时间、处理过程、处理结果都和步骤三中模拟的情况一致。在生产环境中可以进一步登录机器排查消费失败和慢的原因。
实验链接:https://developer.aliyun.com/adc/scenario/5047b5418f5349bcbd18ed69da2a135a