注文が二重登録されるのはなぜ?Webhook連携で再送しても重複させない方法
まず押さえたいこと
Webhookでは
- 通知が
二回来る こと自体は、 連携の 異常とは 限らない。 - 通知の
IDと、 実行する 業務の 識別子を 分ける。 - 登録後の
通信切断を 試し、 結果 不明の 処理を 追えるように する。
このガイドの背景
お客様の注文は一件なのに、倉庫には同じ出荷指示が二件ある。担当者は再送ボタンを押しただけで、二度送るつもりはなかった。連携が不安定なときに起こり得る困りごとです。
原因には、同じ通知の再送や、登録済みなのに応答だけ届かない通信切断があります。Webhookは届いた回数と仕事をする回数を分ける設計が必要です。二重登録を防ぎながら、未処理も取りこぼさない方法を説明します。
相手は受け付けた。でも、こちらには返事が届かなかった
説明用の
この
- 倉庫で
登録済み 出荷指示は受け付けられている
- 応答だけ届かない
送信側は結果を確定できない
- 同じ
指示を 照会 既存の結果を確認してから再開を決める
通信の失敗と、出荷指示が未登録であることは同じではありません。
Webhookは、一回だけ届く前提にしない
Webhookは、
受信側では、
通知が違っても、同じ注文を動かしていることがある
注文確定と
また、
冪等性は、送り直しても仕事を増やさないための仕組み
冪等性は、
金額や
待てば直る問題と、止めて確認する問題を分ける
アクセスが
業務上の
表が収まらない場合は横にスクロールできます。
| 起きたこと | 先にすること | 再開の条件 |
|---|---|---|
| 呼び出し制限 | 指定された待機条件を確認 | 許可される頻度で再試行 |
| 入力不足 | 元データと必要項目を確認 | 修正と履歴の記録が済む |
| 権限切れ | 接続管理者へ連絡 | 認証回復と対象状態の確認 |
| 登録後の通信切断 | 外部の処理結果を照会 | 重複を防ぐ根拠が得られる |
依頼先には、わざと途中で止める試験を頼む
正常な
復旧の
検討・発注前のチェックリスト
担当者と確認状況を添えて、社内の検討メモや打ち合わせの議題にご活用ください。
チェックリストをテキストで保存確認日:________________ / 担当者:________________
- 通知IDと業務の識別子を分ける。確認状況・メモ:
- 分納や訂正を同じ仕事と誤認しない単位を決める。確認状況・メモ:
- 通知の同時到着を試験に含める。確認状況・メモ:
- 登録直後の通信切断で結果を照会できるか試す。確認状況・メモ:
- 再試行の上限と担当者へ戻す期限を決める。確認状況・メモ:
- 手入力で補った結果を自動処理へ反映する。確認状況・メモ:
- 古い通知と取りこぼしを照合できるようにする。確認状況・メモ:
よくある質問
再送をやめれば、二重登録はなくなりますか?
再送をやめるだけでは、届かなかった通知や途中で止まった処理が残ります。同じ仕事を重ねない記録を持ち、状態を確認したうえで未処理を再開する設計が必要です。
イベントIDを保存するだけでは足りませんか?
同じ通知の重複は見つけられますが、別の通知から同じ出荷を作る場合や同時実行は別に扱います。業務単位の識別、処理権の確保、外部の結果確認を合わせて設計します。
参考資料
製品の仕様・提供条件は変更されることがあります。採用時には公式資料と契約内容をご確認ください。
- Receive Stripe events in your webhook endpointStripe
- Idempotent requestsStripe
- Retry behavior - AWS SDKs and ToolsAmazon Web Services
記事の内容を、自社の検討へ
二重登録を防ぐ連携の開発について相談する
どの注文が、どの連携先へ、どんな操作の後に重複したかをお知らせください。認証情報を除いた実行状況から、再送・結果照会・復旧を含む開発範囲を考えます。
対象業務・開発する範囲・運用の分担。まだ決まっていないことも含めて、一緒に整理します。
この記事について
編集・発行:株式会社ダンドリ
AI・業務システム・Webサービスの設計、開発、運用を支援する会社です。開発を検討する方が判断に使えるよう、公式資料と公開情報をもとに解説しています。
説明用の例と公開事例を区別し、参照した資料は本文と記事末尾に掲載しています。
会社情報を見る