Vai al contenuto principale
Questo articolo è un’indagine iniziale a giugno 2026. laravel/symfony-on-cloud è un repository in fase di sviluppo e sono previste ulteriori funzionalità.

Cos’è laravel/symfony-on-cloud

laravel/symfony-on-cloud è il bundle Symfony ufficiale che porta le funzionalità di Laravel Cloud nelle applicazioni Symfony. È un repository molto recente, pubblicato il 27 giugno 2026. Laravel Cloud era finora una piattaforma dedicata alle applicazioni Laravel; con questo pacchetto anche gli sviluppatori Symfony possono sfruttare l’infrastruttura di Laravel Cloud (come le code gestite). La prima funzionalità è la coda gestita basata su Symfony Messenger. Nel README si legge “more Laravel Cloud capabilities will follow”, quindi in futuro sono attese altre funzionalità oltre alla coda.

Installazione

composer require laravel/symfony-on-cloud
Quindi registra il bundle in config/bundles.php (le ricette Symfony Flex non sono ancora supportate, quindi va aggiunto manualmente).
return [
    // ...
    Laravel\Cloud\Symfony\LaravelCloudBundle::class => ['all' => true],
];

Managed Queue

Configurazione di base

Il bundle fornisce un trasporto già pronto chiamato cloud. Negli ambienti Laravel Cloud le impostazioni di connessione vengono iniettate automaticamente, quindi non serve configurare manualmente il DSN.
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
Anche la migrazione di app Symfony Messenger esistenti su Laravel Cloud è semplice. Cloud inietta automaticamente MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue, quindi le app che usano già il trasporto async (dsn: '%env(MESSENGER_TRANSPORT_DSN)%') funzionano senza modifiche al codice.

Code multiple

In un ambiente Laravel Cloud puoi creare più code gestite (ad esempio default e critical). Ogni coda gira con la propria coda SQS indipendente e i propri worker. Usa CloudQueueStamp per fare dispatch verso una specifica coda.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;
use Symfony\Component\Messenger\MessageBusInterface;

$bus->dispatch(new ProcessReport($report), [new CloudQueueStamp('critical')]);
Se fai dispatch senza stamp, il messaggio va alla coda predefinita.

Code FIFO

Le managed queue il cui nome termina in .fifo sono trattate come code FIFO. I messaggi vengono consegnati in un ordine rigoroso e i duplicati vengono rimossi.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [new CloudQueueStamp('orders.fifo')]);
Per impostazione predefinita il group ID viene impostato al nome della coda e il deduplication ID a un valore univoco. Se serve un controllo più preciso, aggiungi 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,
    ),
]);

Fair queue

Le SQS fair queue sono un meccanismo per cui, se un tenant invia un gran numero di job, non riesce a schiacciare gli altri tenant. Assegnando un message group ID su una coda standard, SQS distribuisce equamente la capacità di elaborazione tra i tenant.
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 è esclusivo delle code standard e non è utilizzabile con le code FIFO. Per specificare il gruppo su una coda FIFO usa CloudFifoStamp.

Ritardo

Con DelayStamp puoi impostare un ritardo di invio sulle code standard. Tuttavia, per specifica SQS, c’è un limite di massimo 15 minuti. Oltre i 15 minuti si ha un errore (non viene eseguito silenziosamente a 15 minuti). Sulle code FIFO il ritardo non è supportato, quindi DelayStamp stesso genera un errore.

Retry

Se un handler fallisce, il bundle restituisce il messaggio a SQS e lo fa riconsegnare tramite il visibility timeout. Puoi attendere fino al limite del visibility timeout di SQS (12 ore) invece che al limite di invio (15 minuti). Per la configurazione dei retry si usa il retry_strategy standard di Symfony Messenger.
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3    # 3 retry (4 esecuzioni totali)
                    delay: 1000       # Backoff iniziale (ms)
                    multiplier: 2     # Moltiplicatore di backoff
                    max_delay: 0      # Nessun limite (vale il limite di 12 ore di SQS)
Le eccezioni che implementano UnrecoverableExceptionInterface vengono immediatamente segnate come fallite senza retry.

Sviluppo locale

Il trasporto cloud può essere sovrascritto nell’app. In locale, usando sync://, i job vengono eseguiti in modo sincrono e immediato.
# config/packages/messenger.yaml
when@dev:
    framework:
        messenger:
            transports:
                cloud: 'sync://'
Per disabilitare completamente la funzionalità imposta laravel_cloud.queue.enabled: false.

Conclusioni

laravel/symfony-on-cloud è il bundle ufficiale che permette di sfruttare l’infrastruttura di Laravel Cloud anche nelle app Symfony. La prima funzionalità implementata è la coda gestita, con integrazione a Symfony Messenger, code multiple, code FIFO/fair e configurazione dei retry: funzionalità pratiche già disponibili.
StampUso
CloudQueueStampDispatch a una specifica coda
CloudFifoStampControllo di ordine e deduplicazione delle code FIFO
CloudMessageGroupStampDistribuzione fair delle code standard (chiave tenant)
Secondo il README ufficiale sono attese in futuro anche altre funzionalità di Laravel Cloud oltre alla coda. Se cresceranno i casi di app Symfony gestite su Laravel Cloud, sarà un pacchetto di grande valore.

laravel/symfony-on-cloud

Repository ufficiale e README

Laravel Cloud

Sito ufficiale di Laravel Cloud

Symfony Messenger

Documentazione ufficiale di Symfony Messenger

Documentazione Laravel Cloud

Documentazione dettagliata di Laravel Cloud
Ultima modifica il 13 luglio 2026