每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 2 个月前

端点返回 200 了,但业务其实失败了

2 个回答 3,649 次浏览 Webhook 与事件 最后活跃 1 个月前
27

为了不让 Shopify 重试,端点一律先返回 200 再处理,结果处理失败的事件全部静默丢失。

镇
小镇提问者
Shopify Plus 架构顾问 · 跨境多市场
2 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
64

先把判断放在前面:200 只表示「已接收」,业务失败必须靠自己的重试与死信机制兜住。

1处理顺序

  1. 把「接收」和「处理」拆成两个阶段,接收成功才返回 200。
  2. 处理失败进重试队列,重试 N 次后进死信表并告警。
  3. 每天跑一次对账,用 API 拉增量补漏。
  4. 监控死信表数量,这是最直接的健康指标。
  5. 事件表记录状态流转,方便定位卡在哪一步。
验收:人为制造处理失败,事件进入死信并告警,修复后能重放成功。
风 风格技术团队 回答于 1 个月前
5

这条经验很贵:静默失败比报错更可怕,因为它不会触发任何监控。日志里至少要有「接收 / 处理成功 / 处理失败」三个明确状态。

陈 陈工 · Shopify 认证开发者 · 1 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu