About messenger-retry-failures
A Symfony development skill for handling Messenger failures, from retry decisions and transport settings to failed-message triage. It also covers idempotent handlers and alerts for final failures.
Key features
- 01Classify transient and permanent failures
- 02Configure retries per transport
- 03Route failures to a dedicated queue
- 04Make handlers idempotent
- 05Inspect, retry, or remove failed messages
- 06Alert on final failures
Use cases
- 01Set retry behavior for failing handlers
- 02Triage messages in the failure transport
- 03Alert when a message will not be retried
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill messenger-retry-failuresAfter installing, type/messenger-retry-failuresin Claude Code to confirm it loaded.
Bundled filesreference.md
Details
From the project READMEMessenger Retry Failures (Symfony)
Use when
- A handler fails and you must decide between retrying and giving up.
- Tuning
retry_strategy(max_retries,delay,multiplier,max_delay) for a transport. - Inspecting, retrying, or removing messages in the failure transport.
- Alerting when a message fails for good.
Default workflow
- Classify each failure:
UnrecoverableMessageHandlingExceptionwhen retrying cannot help,RecoverableMessageHandlingExceptionwhen the cause is transient. - Set
retry_strategyper transport and pointfailure_transportto a dedicated queue. - Implement
RetryStrategyInterfaceonly when the built-in backoff is not enough, and register it throughretry_strategy.service. - Make the handler idempotent, with a stable idempotency key for external calls.
- Triage with
messenger:failed:show, thenmessenger:failed:retryormessenger:failed:remove. - Subscribe to
WorkerMessageFailedEventand alert only whenwillRetry()is false.
Guardrails
- Never retry what cannot succeed, such as invalid input or a declined card.
- Keep
max_retriesmodest (3-5 usually) with exponential backoff, so a failing service is not hammered. retryDelayandforceRetryon the recoverable exception are marked 8.1+ in the reference, andforceRetry: truegoes pastmax_retries: verify the version before relying on them.messenger:failed:retryis interactive unless--force: read the message with-vvfirst.
Progressive disclosure
- Use this file for execution posture and risk controls.
- Open references when deep implementation details are needed.
Output contract
- The exception class chosen for each failure mode of the handler.
- Retry settings per transport, and the failure transport.
- The failed-message runbook (show, retry, remove) and the alert on final failure.
References
reference.md
Comments
Markdown supported