小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • 中间件测试精华文章

    • 中间件测试精华文章
    • 1. Redis 在测试项目中怎么理解
    • 2. 缓存一致性问题怎么测试
    • 3. 缓存穿透击穿雪崩怎么回答
    • 4. MQ 消息队列测试怎么做
    • 5. 消息积压怎么发现和定位
    • 6. 异步链路测试怎么验证结果
    • 7. 重复消费和幂等性怎么测试
    • 8. 延迟消息和定时任务怎么测
    • 9. Redis 和数据库数据不一致怎么排查
    • 10. 中间件面试怎么结合业务场景
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

5. 消息积压怎么发现和定位

消息积压是 MQ 测试和线上问题排查中非常常见的现象。所谓消息积压,就是消息生产速度大于消费速度,队列里的消息越来越多,导致业务处理延迟。例如支付成功后订单迟迟不更新、短信很久才收到、库存状态延迟变化、报表数据长时间不同步,这些都可能和消息积压有关。

面试中问“消息积压怎么发现和定位”,测试工程师不能只说“看 MQ 控制台”。更完整的回答应该包括:从业务现象发现延迟,通过 MQ 控制台或监控查看堆积量,通过生产者和消费者日志确认消息发送与消费情况,再分析消费者是否异常、消费能力是否不足、下游依赖是否慢、是否有某条脏数据阻塞、是否扩容消费者或做补偿。测试要能把技术现象和业务结果联系起来。

一、消息积压会造成什么业务影响

消息积压的核心影响是异步结果延迟。

常见表现:

  • 支付成功后订单仍显示待支付;
  • 下单成功后库存迟迟不扣减;
  • 退款申请后状态长时间不更新;
  • 用户很久才收到短信或站内信;
  • 报表数据延迟;
  • 搜索结果没有同步新数据;
  • 优惠券发放延迟;
  • 自动化用例等待异步结果超时。

如果测试只验证接口立即返回,会漏掉这些问题。

二、消息积压怎么发现

1. 从业务现象发现

最直观的是业务结果延迟。例如支付回调成功,但订单 5 分钟后仍未更新。

测试要记录操作时间和业务 ID,例如订单号、用户 ID、消息 ID。

2. 从 MQ 控制台发现

很多 MQ 平台可以查看:

  • 队列堆积数量;
  • 消费者状态;
  • 消费速率;
  • 生产速率;
  • 消费延迟;
  • 死信队列数量。

测试环境如果有权限,可以直接查看。

3. 从监控告警发现

成熟系统会对队列积压设置告警,比如堆积超过阈值或消费延迟超过阈值。

4. 从日志发现

生产者日志显示消息正常发送,但消费者日志没有消费记录,或者消费很慢。

三、消息积压定位思路

可以按下面链路排查:

是否生产过快 -> 消费者是否在线 -> 消费是否报错 -> 下游依赖是否慢 -> 是否单条消息阻塞 -> 消费能力是否不足

四、消费者是否正常

第一步看消费者是否在线、是否有异常日志。

常见问题:

  • 消费者服务没启动;
  • 消费者进程挂了;
  • 消费者连接 MQ 失败;
  • 消费者订阅 topic 或 queue 错误;
  • 消费者版本部署错误;
  • 消费者权限配置错误。

如果消费者不在线,消息自然会积压。

五、消费是否报错

消费者在线但一直消费失败,也会造成积压。

常见原因:

  • 消息格式不符合预期;
  • 数据库异常;
  • 业务数据不存在;
  • 接口调用失败;
  • 字段为空导致异常;
  • 幂等校验异常;
  • 下游服务超时。

测试要查看消费者日志中是否有 ERROR、Exception、messageId、订单号等关键字。

六、下游依赖是否慢

消费者处理消息时,可能需要写数据库、调用第三方接口、更新缓存、调用其他服务。如果这些依赖慢,消费速度就会下降。

比如:

  • 消费支付消息时调用订单服务慢;
  • 消费通知消息时短信服务慢;
  • 消费库存消息时数据库锁等待;
  • 消费报表消息时大 SQL 慢。

这类问题表现为消费者在线,但消费速率很低。

七、是否生产速度过快

活动、秒杀、批量导入、压测时,生产消息速度可能突然升高。

如果消费者数量和处理能力不足,消息会积压。

测试要关注:

  • 活动高峰时消息量;
  • 消费者实例数;
  • 单条消息处理耗时;
  • 队列堆积增长趋势;
  • 是否支持扩容消费者。

八、是否单条脏消息阻塞

有些队列或消费模式下,一条异常消息反复失败,会影响后续消息消费。

例如某条订单消息字段缺失,消费者每次处理都报错,重试后仍失败。

测试要关注:

  • 是否有死信队列;
  • 是否跳过异常消息;
  • 是否记录失败原因;
  • 是否有人工补偿入口。

九、消息积压测试场景

场景 1:消费者停止

  1. 停止消费者服务;
  2. 触发大量业务消息;
  3. 查看队列积压;
  4. 恢复消费者;
  5. 验证消息是否继续消费;
  6. 验证最终业务结果是否正确。

场景 2:消费者处理慢

模拟下游数据库或接口慢,观察消费延迟是否增加,系统是否告警。

场景 3:异常消息

构造字段异常或业务数据缺失的消息,验证是否重试、进入死信队列、记录日志。

场景 4:高峰消息

压测或批量操作,观察生产速率、消费速率和堆积变化。

十、Bug 怎么描述

一个好的消息积压 Bug 要包含:

操作时间:10:30
业务 ID:订单 NO10001
现象:支付成功后 10 分钟订单仍为待支付
MQ 观察:payment-success topic 堆积从 0 增长到 5000
消费者日志:OrderConsumer 连接数据库超时
影响:订单状态更新延迟,用户无法查看支付结果

这样比“订单状态没更新”清楚很多。

十一、面试回答模板

如果面试官问“消息积压怎么发现和定位”,可以这样回答:

消息积压可以从业务现象、MQ 控制台、监控告警和日志中发现。比如支付成功后订单状态长时间不更新,就要怀疑支付消息是否积压。定位时我会先看消息是否正常生产,再看消费者是否在线、是否有消费日志、是否报错;如果消费者在线但消费慢,就看下游数据库、接口、缓存等依赖是否变慢;如果有异常消息反复失败,要看是否进入死信队列或有补偿机制。测试时还会模拟消费者停止、消费失败、高峰消息和恢复消费,验证系统最终一致性。

十二、常见追问

追问:消息积压一定是 MQ 问题吗?

不一定。可能是消费者挂了、消费逻辑报错、下游数据库慢、第三方接口慢或生产速度太快。

追问:积压恢复后要测什么?

要验证积压消息是否全部消费,业务状态是否最终正确,是否重复处理,是否有数据丢失。

追问:怎么防止消息积压?

扩容消费者、优化消费逻辑、限流、批量消费、异步处理、死信队列、监控告警。

十三、练习清单

  1. 准备支付消息积压案例;
  2. 准备短信消息积压案例;
  3. 查看队列堆积量;
  4. 查看消费者日志;
  5. 分析消费失败原因;
  6. 模拟消费者停止;
  7. 恢复消费者验证最终结果;
  8. 验证重复消费幂等;
  9. 理解死信队列;
  10. 准备消息积压面试回答。

消息积压测试的关键是业务结果延迟和最终一致性。测试要能从用户现象追到消息队列,再追到消费者和下游依赖。

配套刷题:

  • 中间件测试面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
4. MQ 消息队列测试怎么做
Next
6. 异步链路测试怎么验证结果