字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢?

答:

首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性;

推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨)

01 先了解RocketMQ

作为测试也是要简单了解RocketMQ。简单来说,就是一个分布式发布-订阅消息中间件,底层基于队列模型来实现消息收发功能。

包含4个模块:Namesrv, Broker, Producer, Consumer。

Nameserver:

存储当前集群所有Brokers信息、Topic跟Broker的对应关系。

Broker:

集群最核心模块,主要负责Topic消息存储、消费者的消费位点管理(消费进度)。

Producer:

消息生产者,每个生产者都有一个ID(编号),多个生产者实例可以共用同一个ID。同一个ID下所有实例组成一个生产者集群。

Consumer:

消息消费者,每个订阅者也有一个ID(编号),多个消费者实例可以共用同一个ID。同一个ID下所有实例组成一个消费者集群。

NameServer:注册地址,替代Zookeeper,为什么不用zookeeper,自行百度。

Broker:单个服务,可以有多个RocketMQ在不同的地方

02 整理测试点

1、消费主流程是正常的

2、逆向用例与异常值处理

对于Produce和Consumer两端的异常消息处理,如消息某个参数为空,为异常的情况,在Produce发送错误信息后,消费端是否能够有效处理错误问题。需要对日志和数据库等方面进行查看。

3、消息丢失时的处理情况,(模拟网络等问题)

如因为网络原因导致的消息丢失,是否有补发,通常情况下Produce会设置补发。如果是落库到OS存储、硬盘存储过程中的问题,如何保证消费正常?

4、消息避免重复发送

由于RocketMQ天生就有消息重复发送的机制,所以当产生消息重新发送时,如何对此问题进行处理?通常情况下要对消费端的服务做幂等处理,保证消息不被重复消费。

5、性能相关问题,消费积压

6、消费的先后顺序以及消费阻塞问题

与定时消息同原理,生产者生产消息时指定特定的 MessageQueue ,消费者消费消息时,消费特定的 MessageQueue,当然如果只有单个MessageQueue,则不会有消费顺序的问题。

同一个 MessageQueue 保证里面的消息是顺序消费的前提是:消费者是串行的消费该 MessageQueue,因为就算 MessageQueue 是顺序的,但是当并行消费时,还是会有顺序问题

但是串行消费也同时引入了两个问题:

-a) 引入锁来实现串行

-b) 前一个消费阻塞时后面都会被阻塞

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

相关推荐
欧了1111 小时前
洛谷P9240 [蓝桥杯 2023 省 B] 冶炼金属
职场和发展·蓝桥杯·洛谷·蓝桥杯大学b组c语言
qy发大财2 小时前
加油站(力扣134)
算法·leetcode·职场和发展
qy发大财2 小时前
柠檬水找零(力扣860)
算法·leetcode·职场和发展
賢8433 小时前
如何设计app测试用例
测试用例
看,未来4 小时前
Apipost 与 Postman 工具实践指南:WebSocket调试与动态参数测试
websocket·测试工具·postman
shimly1234564 小时前
tcpdump 用法示例
网络·测试工具·tcpdump
Nicole Potter5 小时前
请说明C#中的List是如何扩容的?
开发语言·面试·c#
程序员老舅5 小时前
C++ Qt项目教程:WebServer网络测试工具
c++·qt·测试工具·webserver·qt项目·qt项目实战
MYPM_AndyLiu5 小时前
Codes 开源免费研发项目管理平台 2025年第一个大版本3.0.0 版本发布及创新的轻IPD实现
测试用例·开源软件·jira·项目管理工具·项目管理软件·teambition·redmine
SuperW7 小时前
蓝桥杯——lcd显示
职场和发展·蓝桥杯