mcpField
M
messenger-retry-failures

messenger-retry-failures

github.com/dev-toolings開発22787 回インストール3 週間前に更新
リポジトリ

messenger-retry-failures について

Symfony 開発向けのスキルです。Messenger の失敗に対し、再試行の判断やトランスポート設定から失敗メッセージの調査まで扱います。冪等なハンドラーと最終失敗時の通知についても説明します。

主な機能

  1. 01一時的な失敗と恒久的な失敗の分類
  2. 02トランスポートごとの再試行設定
  3. 03失敗を専用キューに送る
  4. 04ハンドラーの冪等性を確保
  5. 05失敗メッセージの確認、再試行、削除
  6. 06最終失敗時の通知

活用シーン

  1. 01失敗するハンドラーの再試行動作を設定
  2. 02失敗トランスポート内のメッセージを調査
  3. 03メッセージが再試行されない場合に通知

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill messenger-retry-failures

インストール後、Claude Code で/messenger-retry-failuresを入力して読み込まれたか確認します。

同梱ファイルreference.md

詳細

Messenger の再試行失敗(Symfony)

使用する場面

  • ハンドラーが失敗し、再試行するか諦めるかを判断する必要がある場合。
  • トランスポートの retry_strategy(max_retries、delay、multiplier、max_delay)を調整する場合。
  • 失敗トランスポート内のメッセージを調査、再試行、または削除する場合。
  • メッセージが最終的に失敗したときにアラートを送る場合。

デフォルトのワークフロー

  1. 各失敗を分類します。再試行しても解決できない場合は UnrecoverableMessageHandlingException、原因が一時的な場合は RecoverableMessageHandlingException を使用します。
  2. トランスポートごとに retry_strategy を設定し、failure_transport を専用キューに指定します。
  3. 組み込みのバックオフでは不十分な場合に限り、RetryStrategyInterface を実装し、retry_strategy.service を通じて登録します。
  4. ハンドラーを冪等にし、外部呼び出しには安定した冪等性キーを使用します。
  5. messenger:failed:show でトリアージし、その後 messenger:failed:retry または messenger:failed:remove を実行します。
  6. WorkerMessageFailedEvent をサブスクライブし、willRetry() が false の場合にのみアラートを送ります。

ガードレール

  • 無効な入力や拒否されたカードなど、成功する可能性がない処理は再試行しないでください。
  • 失敗しているサービスに過剰な負荷をかけないよう、指数バックオフを設定し、max_retries は控えめな値(通常は 3~5)にしてください。
  • リファレンスでは、回復可能例外の retryDelay と forceRetry は 8.1+ と記載されており、forceRetry: true は max_retries を超えて再試行します。使用する前にバージョンを確認してください。
  • messenger:failed:retry は --force を指定しない限り対話式です。まず -vv を付けてメッセージを確認してください。

段階的な情報開示

  • 実行時の基本方針とリスク管理には、このファイルを使用します。
  • 詳細な実装情報が必要な場合は、リファレンスを参照してください。

出力要件

  • ハンドラーの各失敗モードで選択する例外クラス。
  • トランスポートごとの再試行設定と失敗トランスポート。
  • 失敗メッセージの運用手順(表示、再試行、削除)と最終失敗時のアラート。

リファレンス

  • reference.md

コメント