Saltar al contenido principal
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.

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

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

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).
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.
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
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.

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.
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. Los mensajes se entregan en un orden estricto y se eliminan duplicados.
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.
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 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.
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 es exclusivo para colas estándar y no se puede usar en colas FIFO. Para indicar grupo en colas FIFO, usa CloudFifoStamp.

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.
# 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.
# 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.
StampUso
CloudQueueStampDispatch a una cola concreta
CloudFifoStampControl de orden y deduplicación en colas FIFO
CloudMessageGroupStampDistribució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

laravel/symfony-on-cloud

Repositorio y README oficiales

Laravel Cloud

Sitio oficial de Laravel Cloud

Symfony Messenger

Documentación oficial de Symfony Messenger

Documentación de Laravel Cloud

Documentación detallada de Laravel Cloud
Última modificación el 13 de julio de 2026