RocketMQ 消息丢失排查记——从"消息没了"到"参数配错"的全过程
引言 "线上有个订单,用户付款成功了,但一直没收到发货通知。查了订单系统,状态是已付款;查了通知系统,根本没收到这条消息。消息就这么……没了?" 这是上周三凌晨收到的一起线上事故。最终定位下来,不是什么高深的 Bug,而是一个不起眼的参数配错了——sendMsgTimeout 设成了 200ms。 但排查过程值得记录,因为每一步都是 RocketMQ 消息可靠性的实战教科书。本文完整复盘这次排查全过程,附排查命令速查表和消息可靠性配置模板。 一、问题现象 1.1 故障描述 维度描述 故障时间周三凌晨 2:00-2:30(高峰期) 影响范围37 笔订单付款后未触发发货通知 用户反馈"我付款半小时了,怎么还没发货?" 业务影响用户投诉 + 客服介入 + 需手动补发 1.2 系统架构 RocketMQ ┌──────────┐ ┌──────────┐ │ Topic: │ ┌──────────────┐ │ 订单系统 │──│ order- │──│ 通知系统 │ │ Order-Svc│ │ notify │ │ Notify-Svc │ └──────────┘ └──....