先对齐业务里的「同一件事」

WMS 的收货、质检、库存、调拨、拣货和出库不是相互独立的接口。它们围绕单据、数量与状态构成一条业务链路。整理这类问题时,起点是把业务对象、状态流转和数量口径放到一起:库存在哪里被占用,什么时候释放,异常回退时应该回到哪个状态。

把重复消息作为明确的处理场景

在 WMS 与 OMS、LES、SAP、QMS 协同的过程中,关注点包括消息重复、状态错位与补偿失败。工程实践中会组合使用业务幂等标识、数据库唯一约束与事务,明确一次业务操作的边界。幂等标识围绕业务事件设计,避免把不同的合法操作混为同一次处理。

让失败有去处,让补偿可追踪

消息处理还需要任务状态、有限重试补偿与失败隔离。排查时沿着业务标识核对任务和单据:请求是否到达、是否已经处理、是否可以再次执行、库存与单据状态是否相符。无法自动恢复的异常需要留下足够信息,便于后续定位与处理。

值得留下的检查清单

  • 梳理占用、释放、回退与异常恢复的状态变化。
  • 明确业务幂等标识和数据库唯一约束的作用范围。
  • 检查 MQ 任务状态、重试次数与补偿结果。
  • 联合库存数量和单据状态核对业务是否完成。