Shopify Webhooks

inventory_levels/update 推得太频繁怎么减压

现象#

大促开始后每秒涌进上百条库存事件,同一个 inventory_item_id 反复推送,队列延迟到十几分钟,后台库存数字跳来跳去。

原因#

  • 每个地点每个库存项每次变动各发一条,一次 CSV 盘点会放大成几千条
  • 同一商品多个地点同时扣减,事件之间不合并,消费端重复计算总量
  • payload 只有 available 与 location_id,不含商品信息,每条都要回查一次
  • 消费端串行处理且每条开一个事务,吞吐被数据库连接数卡死

处理步骤#

  1. 按 inventory_item_id 做键,合并 1~2 秒内的变动只处理最后一条
  2. 用 available 与 updated_at 做幂等,旧时间戳直接丢弃
  3. 批量回查 inventoryItem(id:) 拿 SKU,别在循环里单条查询
  4. 消费端改成一次提交 200 条的批量写入,降低事务开销
  5. 大促期间给该订阅加 include_fields 只留必要字段

验收标准#

大促期间队列延迟稳定在 30 秒内,同一条变动只落一次库,available 与后台库存一致。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。