ジョブやWebhookを安全に再実行できるようにする
冪等キー、明確な状態、再試行のルールで、ジョブやWebhookを二重実行から守るプロンプト。お好きなAIツールに貼り付けると、AIが再実行を安全にする。
- テーマ
- アプリ・プロトタイプ
- 種類
- プロンプト
- レベル
- 上級
- 所要時間
- 約10分
結果はツール、モデル、入力内容によって変わります。
結果のプレビュー
例:当サイトの編集部が書いたもので、実際のAIの出力ではありません。
リスク:10秒以内に応答しないと、決済事業者は同じイベントを再送します。 キー:事業者のイベントID、テーブル「processed_events」の一意インデックス、30日保存 状態:受付 → 処理中 → 完了/失敗 「完了」での再送:すぐ200を返し、何も計上しない 再試行:タイムアウトと5xxのみ、最大5回、間隔はランダム要素付きで延ばす、その後は失敗リストへ テスト:同じイベントを2回送る、計上後に中断する、2件同時に届ける 前提:データベースがトランザクションに対応している。
入力する
入力した内容はこのブラウザ画面の中だけにとどまります。当サイトが保存・送信することはありません。
- 決済サービスのWebhookで入金を記帳する
- ジョブが請求書をメールで送る
- 取り込み処理がショップの注文を作る
- ジョブが取引先のAPIからデータを取得する
- エンドポイントが顧客アカウントを作る
- 入金が二重に記帳される
- 同じメールが顧客に2通届く
- 注文が倉庫に2回出てくる
- カウンターが2倍に増える
- 同じメールアドレスのアカウントが2つできる
- PythonとPostgreSQLとジョブキュー
- Node.jsとRedis
- JavaとSpringとKafka
- PHPとMySQLとcron
- Goとクラウドのメッセージキュー
あなたのプロンプト
プロンプトを編集しました。上の入力欄を変えても、もう上書きされません。
これはAIへの指示文で、まだ完成品ではありません。
このプロンプトが使えるツール
このプロンプトに向いているAIツール:
使い方
- 項目を入力するか、候補をタップします。氏名、住所などの個人情報は入れません。
- 完成したプロンプトをお好きなAIツールに貼り付けます。
- 本番の前に、テスト環境でわざと二重のイベントと中断を起こし、どの効果もちょうど1回だけ起きることを確かめてください。
なぜうまくいくのか
ネットワークやキューは、迷ったら届けないより二重に届けます。キーとはっきりした状態があれば、「たぶん1回だけ」が「効果はちょうど1回」という確かめられる約束に変わります。
ヒント
- キーは実際の変更と同じトランザクションで保存しましょう。そうしないと、両者の間にすき間が残ります。