Passer au contenu principal
Cet article est une analyse initiale à la date de juin 2026. laravel/symfony-on-cloud est un dépôt en développement ; d’autres fonctionnalités doivent suivre.

Qu’est-ce que laravel/symfony-on-cloud ?

laravel/symfony-on-cloud est un bundle Symfony officiel qui apporte les fonctionnalités de Laravel Cloud aux applications Symfony. Il s’agit d’un dépôt très récent, publié le 27 juin 2026. Laravel Cloud était jusqu’ici réservé aux applications Laravel ; ce package permet aux développeurs Symfony d’exploiter l’infrastructure de Laravel Cloud (queues managées, etc.). La première fonctionnalité est une queue managée basée sur Symfony Messenger. Le README indique « more Laravel Cloud capabilities will follow », d’autres fonctionnalités que la queue sont donc prévues.

Installation

composer require laravel/symfony-on-cloud
Enregistrez ensuite le bundle dans config/bundles.php (la recette Symfony Flex n’étant pas encore prise en charge, l’ajout est manuel).
return [
    // ...
    Laravel\Cloud\Symfony\LaravelCloudBundle::class => ['all' => true],
];

Queues managées

Configuration de base

Le bundle fournit un transport prêt à l’emploi appelé cloud. Sur Laravel Cloud, la configuration de connexion est injectée automatiquement — pas besoin de renseigner un DSN à la main.
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
La migration d’une application Symfony Messenger existante vers Laravel Cloud est également simple. Cloud injecte automatiquement MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue, ce qui permet aux applications utilisant le transport async classique (dsn: '%env(MESSENGER_TRANSPORT_DSN)%') de fonctionner sans changement de code.

Plusieurs queues

Sur Laravel Cloud, vous pouvez créer plusieurs queues managées (par exemple default et critical). Chaque queue fonctionne avec une queue SQS et des workers indépendants. Utilisez CloudQueueStamp pour dispatcher vers une queue spécifique.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;
use Symfony\Component\Messenger\MessageBusInterface;

$bus->dispatch(new ProcessReport($report), [new CloudQueueStamp('critical')]);
Sans stamp, le message part vers la queue par défaut.

Queues FIFO

Les queues managées dont le nom se termine par .fifo sont traitées comme des queues FIFO : livraison stricte dans l’ordre et déduplication.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [new CloudQueueStamp('orders.fifo')]);
Par défaut, l’ID de groupe est le nom de la queue et l’ID de déduplication est une valeur unique. Pour un contrôle plus fin, ajoutez CloudFifoStamp.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudFifoStamp;
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [
    new CloudQueueStamp('orders.fifo'),
    new CloudFifoStamp(
        messageGroupId: 'customer-'.$order->customerId,
        messageDeduplicationId: 'order-'.$order->id,
    ),
]);

Queues « fair »

Les queues fair de SQS permettent qu’un locataire injectant beaucoup de jobs ne pénalise pas les autres. En attribuant un ID de groupe sur une queue standard, SQS répartit équitablement la capacité entre locataires.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudMessageGroupStamp;
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [
    new CloudQueueStamp('orders'),
    new CloudMessageGroupStamp('customer-'.$order->customerId),
]);
CloudMessageGroupStamp est réservé aux queues standard et n’est pas utilisable en FIFO. Pour désigner un groupe sur une queue FIFO, utilisez CloudFifoStamp.

Différer

DelayStamp permet de retarder l’envoi sur une queue standard. Attention à la limite SQS de 15 minutes maximum. Au-delà, une erreur est levée (il n’y a pas de bascule silencieuse à 15 minutes). Les queues FIFO ne supportent pas le délai : DelayStamp lève directement une erreur.

Retry

Si le handler échoue, le bundle remet le message dans SQS, qui le redistribue via le visibility timeout. On peut ainsi attendre jusqu’à la limite du visibility timeout SQS (12 heures) plutôt que la limite d’envoi (15 minutes). Utilisez la configuration standard retry_strategy de Symfony Messenger.
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3    # 3 retries (4 exécutions au total)
                    delay: 1000       # Backoff initial (ms)
                    multiplier: 2     # Multiplicateur de backoff
                    max_delay: 0      # Pas de plafond (la limite SQS 12 h s'applique)
Les exceptions implémentant UnrecoverableExceptionInterface sont marquées en échec immédiatement, sans nouvelle tentative.

Développement local

Le transport cloud peut être remplacé côté application. En local, sync:// exécute les jobs immédiatement.
# config/packages/messenger.yaml
when@dev:
    framework:
        messenger:
            transports:
                cloud: 'sync://'
Pour désactiver totalement la fonctionnalité : laravel_cloud.queue.enabled: false.

Conclusion

laravel/symfony-on-cloud est un bundle officiel qui rend l’infrastructure Laravel Cloud utilisable depuis des applications Symfony. La première brique — la queue managée — offre déjà : intégration Symfony Messenger, queues multiples, FIFO / fair, configuration de retry, etc.
StampRôle
CloudQueueStampDispatch vers une queue spécifique
CloudFifoStampContrôle de l’ordre et de la déduplication pour FIFO
CloudMessageGroupStampRépartition équitable en queue standard (clé de tenant)
D’après le README, d’autres fonctionnalités Cloud viendront s’ajouter. Si l’exécution d’applications Symfony sur Laravel Cloud se démocratise, ce package deviendra très précieux.

Liens

laravel/symfony-on-cloud

Dépôt officiel et README

Laravel Cloud

Site officiel de Laravel Cloud

Symfony Messenger

Documentation officielle Symfony Messenger

Documentation Laravel Cloud

Documentation détaillée Laravel Cloud
Dernière modification le 13 juillet 2026