> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# laravel/symfony-on-cloud — eseguire app Symfony su Laravel Cloud

> Indagine sul nuovo repository ufficiale di Laravel. Spiega il bundle ufficiale Symfony che permette di usare le code gestite di Symfony Messenger su Laravel Cloud.

<Info>
  Questo articolo è un'indagine iniziale a giugno 2026. `laravel/symfony-on-cloud` è un repository in fase di sviluppo e sono previste ulteriori funzionalità.
</Info>

## Cos'è laravel/symfony-on-cloud

[laravel/symfony-on-cloud](https://github.com/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.

```mermaid theme={null}
flowchart LR
    A["App Symfony"] --> B["laravel/symfony-on-cloud<br>bundle"]
    B --> C["Managed Queue<br>di Laravel Cloud"]
    C --> D["AWS SQS"]
    C --> E["Dashboard Cloud<br>visualizzazione metriche"]
```

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

```bash theme={null}
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).

```php theme={null}
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.

```yaml theme={null}
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
```

<Tip>
  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.
</Tip>

### 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.

```php theme={null}
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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html). I messaggi vengono consegnati in un ordine rigoroso e i duplicati vengono rimossi.

```php theme={null}
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`.

```php theme={null}
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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fair-queues.html) 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.

```php theme={null}
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),
]);
```

<Info>
  `CloudMessageGroupStamp` è **esclusivo delle code standard** e non è utilizzabile con le code FIFO. Per specificare il gruppo su una coda FIFO usa `CloudFifoStamp`.
</Info>

### 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.

```yaml theme={null}
# 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.

```yaml theme={null}
# 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.

| Stamp                    | Uso                                                    |
| ------------------------ | ------------------------------------------------------ |
| `CloudQueueStamp`        | Dispatch a una specifica coda                          |
| `CloudFifoStamp`         | Controllo di ordine e deduplicazione delle code FIFO   |
| `CloudMessageGroupStamp` | Distribuzione 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.

## Link correlati

<CardGroup cols={2}>
  <Card title="laravel/symfony-on-cloud" icon="github" href="https://github.com/laravel/symfony-on-cloud">
    Repository ufficiale e README
  </Card>

  <Card title="Laravel Cloud" icon="cloud" href="https://laravel.com/cloud">
    Sito ufficiale di Laravel Cloud
  </Card>

  <Card title="Symfony Messenger" icon="envelope" href="https://symfony.com/doc/current/messenger.html">
    Documentazione ufficiale di Symfony Messenger
  </Card>

  <Card title="Documentazione Laravel Cloud" icon="book" href="https://cloud.laravel.com/docs/intro">
    Documentazione dettagliata di Laravel Cloud
  </Card>
</CardGroup>


## Related topics

- [WebSocket (Jetstream / Firehose)](/it/packages/laravel-bluesky/websocket.md)
- [Cloud Sessions](/it/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Aggiornamenti Laravel di giugno 2026](/it/blog/changelog/202606.md)
- [Laravel Cloud — la panoramica completa del PaaS dedicato a Laravel](/it/blog/laravel-cloud.md)
- [Laravel Cloud CLI — usa Laravel Cloud dal terminale](/it/blog/laravel-cloud-cli.md)
