🔁
リトライ付きの堅牢なデータ同期フローを構築する
APIのレート制限・一時障害に対応するリトライロジックとエクスポネンシャルバックオフを実装し、24時間安定して動作するデータ同期ワークフローのパターン。
ユースケース概要
外部APIへのデータ同期で発生する一時的なエラー(503・429・タイムアウト)に自動でリトライし、永続的なエラーのみ担当者に通知する堅牢なフロー設計パターン。
解決する課題: API一時障害のたびに手動再実行が必要な状況をなくし、自己修復するワークフローを実現する
使用するn8nノード:
- HTTP Request(
Retry on Fail設定) - Code(リトライ状態の管理)
- Wait(エクスポネンシャルバックオフ)
- IF(リトライ可能エラーと永続エラーの区別)
ワークフロー構成
パターン1: ノード組み込みリトライ(シンプル)
[HTTP Request]
↓ Settings → On Error: Retry on Fail
Max Tries: 5
Wait Between Tries: 3000ms
パターン2: カスタムリトライロジック(詳細制御)
[HTTP Request: API呼び出し(Error Output有効)]
├── 成功 → 後続処理
└── エラー →
[Code: リトライ回数カウントアップ]
↓
[IF: retryCount < 3 AND statusCode IN [429, 503, 504]]
├── true →
│ [Code: 待機時間計算(指数的バックオフ)]
│ ↓
│ [Wait: 計算された時間待機]
│ ↓
│ [HTTP Request: 再試行]
└── false → [Slack: 永続エラー通知]
実装手順
パターン1: 組み込みリトライの設定
Node Settings:
On Error: Retry on Fail
Max Tries: 3
Wait Between Tries: 5000 (5秒)
パターン2: 指数的バックオフの実装
リトライ回数の管理(Codeノード)
const retryCount = ($json._retryCount ?? 0) + 1;
const statusCode = parseInt($json.error?.httpCode ?? '0');
// リトライ可能なエラーコード
const retryableErrors = [429, 503, 504, 500];
const canRetry = retryableErrors.includes(statusCode) && retryCount <= 3;
// 指数的バックオフ: 2^retryCount * 1000ms (2s, 4s, 8s)
const waitMs = Math.pow(2, retryCount) * 1000;
return [{
json: {
...$json,
_retryCount: retryCount,
_canRetry: canRetry,
_waitMs: waitMs
}
}];
待機時間の設定(Waitノード)
Wait Amount: {{ $json._waitMs }}
Wait Unit: Milliseconds
レート制限(429)への対応
Retry-Afterヘッダーがある場合はその値を待機時間として使用する:
const retryAfter = $input.first().headers?.['retry-after'];
const waitMs = retryAfter
? parseInt(retryAfter) * 1000
: Math.pow(2, $json._retryCount) * 1000;
冪等性の確保
リトライしても安全なAPI設計のポイント:
POSTではなくPUT/PATCHでupsert操作にする- リクエストに
Idempotency-Keyヘッダーを付与する(Stripe等で対応) external_idでのupsertにし、重複作成を防ぐ
ポイント・注意事項
- 429(レート制限)はリトライが有効だが、401(認証失敗)・404はリトライ不要
- 指数的バックオフなしの連続リトライはレート制限をさらに悪化させる
- リトライ上限に達した場合は必ず担当者への通知を実装する
関連機能
- 1. 🔄n8n概要 - ワークフロー自動化プラットフォーム
- 2. ⚙️n8nワークフローの基本(ノード・コネクション・実行)
- 3. ⚡n8nトリガーの種類(Webhook・スケジュール・イベント)
- 4. 🔀n8nロジック制御(フィルター・条件分岐・ループ・マージ)
- 5. 🌐n8n HTTP Request・API連携
- 6. 🔗n8n主要インテグレーション(Slack・Gmail・GitHub)
- 7. 🛡️n8nエラーハンドリング・デバッグ
- 8. 🤖n8n AI・LLMエージェント(Chain・Agent)
- 9. 💻n8n Codeノード・カスタム処理
- 10. 🏢n8nエンタープライズ機能(ソース管理・シークレット・チーム管理)
- 11. 🌤️毎朝SlackにAIで天気・ニュースを通知する
- 12. 📊GitHubのPRをGoogleシートに自動記録する
- 13. 📧新規ユーザー登録時にWelcomeメールを自動送信する
- 14. 💳StripeのWebhookで決済完了を検知して処理する
- 15. 📈スケジュールトリガーで週次レポートを自動生成する
- 16. 🎫Gmailトリガーでサポートメールを自動Notionチケット化する
- 17. 🎯条件分岐でリード属性に応じて担当者を振り分ける
- 18. 📨ループ処理でリストを走査し一括メール送信する
- 19. 📋複数APIのデータをマージして統合レポートを作成する
- 20. 🗄️外部REST APIからデータを取得してDBに保存する
- 21. 🔍GraphQL APIでGitHubのIssueを取得・加工する
- 22. 🔐Bearer認証付きAPIを呼び出してデータ同期する
- 23. ✅SlackとNotionを連携したチームタスク管理フロー
- 24. 🤝GmailとHubSpotを連携したCRM自動化フロー
- 25. 🚀GitHubデプロイイベントをSlackに通知する
- 26. 🚨APIエラー発生時にSlackへアラートを送る
- 27. 🔁リトライ付きの堅牢なデータ同期フローを構築する
- 28. 📝エラーログをAirtableに自動記録する
- 29. 🤖LLMを使ったカスタマーサポート自動応答ボット
- 30. 🔎ドキュメントRAG検索システムを構築する
- 31. 📬AIでメール内容を自動分類・ルーティングする
- 32. 🔧JavaScriptで複雑なデータ変換処理を実装する
- 33. 📄npmライブラリを使ったPDF自動生成フロー
- 34. ✔️カスタムバリデーションロジックをCodeノードで実装する
- 35. 🗂️Gitでワークフローをバージョン管理する
- 36. 🌍環境変数で本番・ステージングを切り替える
- 37. 👥チームでのワークフロー共同管理フロー
- 38. 📋AIで履歴書を自動スクリーニング・スコアリングする
- 39. 🧾請求書PDFをOCRで自動データ入力・会計ソフト登録する
- 40. 📱ブログ記事→SNS自動投稿パイプラインを構築する
- 41. 📦Shopify注文処理を完全自動化する(在庫・配送・顧客通知)
- 42. 🔔予約リマインダーを自動送信してノーショーを削減する
- 43. 📊経営ダッシュボードを毎朝Slackに自動配信する
- 44. 🔭競合情報を自動収集してWeeklyレポートにまとめる
- 45. 🎉新入社員オンボーディングを完全自動化する
出典: https://docs.n8n.io/flow-logic/error-handling/