> ## 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 — Ejecutar aplicaciones Symfony en Laravel Cloud

> Investigación del nuevo repositorio oficial de Laravel. Se explica el bundle oficial de Symfony que permite utilizar las colas gestionadas de Symfony Messenger sobre Laravel Cloud.

<Info>
  Este artículo es una investigación inicial a fecha de junio de 2026. `laravel/symfony-on-cloud` es un repositorio en fase de desarrollo, y está previsto que se añadan más funciones en el futuro.
</Info>

## ¿Qué es laravel/symfony-on-cloud?

[laravel/symfony-on-cloud](https://github.com/laravel/symfony-on-cloud) es un bundle oficial de Symfony que **aporta a las aplicaciones Symfony las funcionalidades de Laravel Cloud**. Es un repositorio muy nuevo, publicado el 27 de junio de 2026.

```mermaid theme={null}
flowchart LR
    A["App Symfony"] --> B["Bundle<br>laravel/symfony-on-cloud"]
    B --> C["Colas gestionadas<br>de Laravel Cloud"]
    C --> D["AWS SQS"]
    C --> E["Visualización de métricas<br>en el dashboard de Cloud"]
```

Hasta ahora Laravel Cloud era una plataforma exclusiva para aplicaciones Laravel, pero con este paquete **los desarrolladores de Symfony también pueden aprovechar la infraestructura de Laravel Cloud (colas gestionadas, etc.)**.

La primera funcionalidad son las **colas gestionadas usando Symfony Messenger**. En el README se indica que «more Laravel Cloud capabilities will follow», por lo que está previsto añadir más funciones aparte de las colas.

## Instalación

```bash theme={null}
composer require laravel/symfony-on-cloud
```

A continuación, registra el bundle en `config/bundles.php` (como aún no hay receta de Symfony Flex, hay que añadirlo manualmente).

```php theme={null}
return [
    // ...
    Laravel\Cloud\Symfony\LaravelCloudBundle::class => ['all' => true],
];
```

## Cola gestionada

### Configuración básica

El bundle proporciona un transport predefinido llamado `cloud`. En entornos de Laravel Cloud se inyectan automáticamente los ajustes de conexión, por lo que no hay que configurar manualmente el DSN.

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

<Tip>
  Migrar una app Symfony Messenger existente a Laravel Cloud también es sencillo. Como Cloud inyecta automáticamente `MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue`, las apps que usan tal cual el transport `async` tradicional (`dsn: '%env(MESSENGER_TRANSPORT_DSN)%'`) funcionan sin cambios de código.
</Tip>

### Múltiples colas

En entornos de Laravel Cloud puedes crear múltiples colas gestionadas (por ejemplo `default` y `critical`). Cada cola funciona con colas SQS y workers independientes. Con `CloudQueueStamp` puedes despachar a una cola concreta.

```php theme={null}
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;
use Symfony\Component\Messenger\MessageBusInterface;

$bus->dispatch(new ProcessReport($report), [new CloudQueueStamp('critical')]);
```

Si haces dispatch sin stamp, se envía a la cola por defecto.

### Colas FIFO

Las colas gestionadas cuyo nombre acaba en `.fifo` se tratan como [colas FIFO](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html). Los mensajes se entregan en un orden estricto y se eliminan duplicados.

```php theme={null}
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [new CloudQueueStamp('orders.fifo')]);
```

Por defecto, se asignan automáticamente como group ID el nombre de la cola y como deduplication ID un valor único. Si necesitas un control más fino, añade `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,
    ),
]);
```

### Colas justas (fair queues)

Las [colas justas de SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fair-queues.html) son un mecanismo que evita que, si un tenant inyecta muchos jobs, ahogue a los demás tenants. Al asignar un message group ID en una cola estándar, SQS reparte la capacidad de procesamiento de forma equitativa entre tenants.

```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` es **exclusivo para colas estándar** y no se puede usar en colas FIFO. Para indicar grupo en colas FIFO, usa `CloudFifoStamp`.
</Info>

### Retraso

Con `DelayStamp` puedes configurar un retraso de envío en la cola estándar. Sin embargo, por la especificación de SQS, hay un límite de **máximo 15 minutos**. Si superas los 15 minutos se produce un error (no se ejecuta silenciosamente a los 15 minutos).

En las colas FIFO no se soporta el retraso, por lo que el propio `DelayStamp` produce error.

### Reintento

Si el handler falla, el bundle devuelve el mensaje a SQS y lo reentrega mediante el visibility timeout. En lugar del límite de envío (15 minutos), se puede esperar hasta el máximo del visibility timeout de SQS (**12 horas**).

Para la configuración de reintentos se usa el `retry_strategy` estándar de Symfony Messenger.

```yaml theme={null}
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3    # 3 reintentos (4 ejecuciones en total)
                    delay: 1000       # Primer backoff (ms)
                    multiplier: 2     # Multiplicador del backoff
                    max_delay: 0      # Sin límite (se aplica el límite de 12 h de SQS)
```

Las excepciones que implementen `UnrecoverableExceptionInterface` se registran como fallidas inmediatamente sin reintento.

## Desarrollo local

El transport `cloud` puede sobrescribirse en la app. En local, usando `sync://` los jobs se ejecutan de forma síncrona e inmediata.

```yaml theme={null}
# config/packages/messenger.yaml
when@dev:
    framework:
        messenger:
            transports:
                cloud: 'sync://'
```

Para desactivar completamente la funcionalidad, establece `laravel_cloud.queue.enabled: false`.

## Conclusión

`laravel/symfony-on-cloud` es un bundle oficial que permite aprovechar en apps Symfony la infraestructura de Laravel Cloud. Se han implementado primero las **colas gestionadas**, con funcionalidades prácticas como la integración con Symfony Messenger, múltiples colas, colas FIFO/fair y configuración de reintentos.

| Stamp                    | Uso                                                    |
| ------------------------ | ------------------------------------------------------ |
| `CloudQueueStamp`        | Dispatch a una cola concreta                           |
| `CloudFifoStamp`         | Control de orden y deduplicación en colas FIFO         |
| `CloudMessageGroupStamp` | Distribución justa en colas estándar (clave de tenant) |

Según el README oficial, en el futuro se añadirán más funcionalidades de Laravel Cloud además de las colas. Si crecen los casos de operar apps Symfony sobre Laravel Cloud, parece un paquete de gran valor.

## Enlaces relacionados

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

  <Card title="Laravel Cloud" icon="cloud" href="https://laravel.com/cloud">
    Sitio oficial de Laravel Cloud
  </Card>

  <Card title="Symfony Messenger" icon="envelope" href="https://symfony.com/doc/current/messenger.html">
    Documentación oficial de Symfony Messenger
  </Card>

  <Card title="Documentación de Laravel Cloud" icon="book" href="https://cloud.laravel.com/docs/intro">
    Documentación detallada de Laravel Cloud
  </Card>
</CardGroup>


## Related topics

- [WebSocket (Jetstream / Firehose)](/es/packages/laravel-bluesky/websocket.md)
- [Actualización de Laravel — Junio de 2026](/es/blog/changelog/202606.md)
- [Laravel Cloud CLI — Operar Laravel Cloud desde la terminal](/es/blog/laravel-cloud-cli.md)
- [Cloud Sessions](/es/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Laravel Cloud — Todo sobre el PaaS específico para Laravel](/es/blog/laravel-cloud.md)
