批量调库存后 webhook 把消费队列刷爆了
现象#
CSV 导入 8000 个变体后,inventory_levels/update 十分钟推来两万多条,消费者积压,同一个 inventory_item_id 收到多条乱序的 available。
原因#
- 每个 inventory level 变动都会独立推一条,批量导入等于成倍放大事件数
- 载荷只有 available 和 updated_at,没有 delta、原因与操作人,难以判断影响
- Shopify 不保证投递顺序,快速连改同一地点时会收到多条相同终值
- 订阅上加了 include_fields 会把 location_id 裁掉,消费端无法定位地点
处理步骤#
- 用
X-Shopify-Webhook-Id做幂等键,重复投递直接丢弃 - 以
updated_at比较,只接受比本地记录更新的载荷,旧包跳过 - 去掉订阅上的
include_fields,保留inventory_item_id和location_id - 消费端按 item 加地点做短窗口合并,只处理窗口内的最终值
- 批量写入改成一次 mutation 多条
changes,从源头减少事件总量
验收标准#
重跑同一批导入,队列峰值事件数明显低于变体数,最终库存与源表逐条一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。