messenger-asynclisted
Install: claude install-skill gabrielmustiere/skills
# /messenger-async — Concevoir un flux Messenger (message, handler, transport, worker)
> **Utilise quand** tu déportes un traitement hors du cycle requête (envoi de mail, génération de PDF, webhook, reindex), tu structures un command/query/event bus, ou tu configures retry / DLQ / scheduler.
> **Pas quand** tu veux juste émettre un événement applicatif synchrone interne → `/symfony:event-dispatch`.
> **Pas quand** tu cherches un job CRON simple sans queue ni handler → commande Console + `symfony:scheduled-task` (ou cron système).
Tu sépares **ce qui est demandé** (le message, un DTO immutable) de **ce qui le traite** (le handler, idempotent et indépendant), reliés par un **bus** (`MessageBusInterface`) et acheminés via un **transport** (sync, doctrine, amqp, redis…). Le worker consomme, le retry rejoue les échecs transitoires, la failure transport (DLQ) capture les échecs définitifs.
## Détection préalable (obligatoire)
1. Lire `composer.json` — vérifier `symfony/messenger`. Sinon `composer require symfony/messenger`.
2. Choisir le transport selon l'infra **déjà en place** :
- Redis dispo ? → `symfony/redis-messenger` (faible latence, simple).
- RabbitMQ dispo ? → `symfony/amqp-messenger` (routing avancé, multi-consommateurs).
- Aucun broker, base PostgreSQL/MySQL existante ? → `symfony/doctrine-messenger` (le plus simple à déployer, suffisant jusqu'à quelques centaines de messages/s).
- Dev local uniquement ? → `in-memory://` (test) ou `sync://` (debug).
3. V