Skip to main content
This article is an early investigation as of June 2026. laravel/symfony-on-cloud is an active repository and new features are expected to be added.

What is laravel/symfony-on-cloud?

laravel/symfony-on-cloud is an official Symfony bundle that brings Laravel Cloud capabilities to Symfony applications. The repository was made public on June 27, 2026. Laravel Cloud was previously exclusive to Laravel applications. This package opens the door for Symfony developers to leverage Laravel Cloud infrastructure — starting with managed queues. The first feature is Symfony Messenger with managed queues. The README notes that “more Laravel Cloud capabilities will follow,” meaning queue support is just the beginning.

Installation

composer require laravel/symfony-on-cloud
Next, register the bundle in config/bundles.php (Symfony Flex recipes are not yet available, so add it manually):
return [
    // ...
    Laravel\Cloud\Symfony\LaravelCloudBundle::class => ['all' => true],
];

Managed Queues

Basic Configuration

The bundle provides a ready-made transport named cloud. In a Laravel Cloud environment, the connection settings are injected automatically — no manual DSN configuration is required.
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
Migrating an existing Symfony Messenger app to Laravel Cloud is straightforward. Cloud automatically injects MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue, so apps that already use the traditional async transport (dsn: '%env(MESSENGER_TRANSPORT_DSN)%') will work without any code changes.

Multiple Queues

In Laravel Cloud you can create multiple managed queues (e.g. default and critical), each backed by its own SQS queue and worker. Use CloudQueueStamp to dispatch to a specific queue:
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;
use Symfony\Component\Messenger\MessageBusInterface;

$bus->dispatch(new ProcessReport($report), [new CloudQueueStamp('critical')]);
Dispatching without a stamp sends the message to the default queue.

FIFO Queues

A managed queue whose name ends in .fifo is treated as a FIFO queue. Messages are delivered in strict order with deduplication.
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [new CloudQueueStamp('orders.fifo')]);
By default, the queue name is used as the group ID and a unique value is used for deduplication. For finer control, add 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 Queues

SQS fair queues prevent one tenant from monopolizing throughput. Attaching a message group ID to a standard queue tells SQS to distribute processing capacity fairly across 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 is for standard queues only and cannot be used with FIFO queues. Use CloudFifoStamp for grouping in FIFO queues.

Delays

Use DelayStamp to add a delivery delay to a standard queue. SQS enforces a maximum of 15 minutes — exceeding this limit raises an error (the message will not silently cap at 15 minutes). FIFO queues do not support delays; using DelayStamp with a FIFO queue will raise an error.

Retries

When a handler fails, the bundle returns the message to SQS and relies on the visibility timeout for redelivery. This allows waiting up to the SQS visibility timeout ceiling of 12 hours, rather than the 15-minute send delay limit. Retry behavior is configured using Symfony Messenger’s standard retry_strategy:
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3     # 3 retries (4 attempts total)
                    delay: 1000        # initial backoff in milliseconds
                    multiplier: 2      # backoff multiplier
                    max_delay: 0       # no cap (SQS 12-hour limit applies)
Exceptions that implement UnrecoverableExceptionInterface are recorded as failures immediately, with no retries.

Local Development

The cloud transport can be overridden in your application. For local development, use sync:// to execute jobs synchronously:
# config/packages/messenger.yaml
when@dev:
    framework:
        messenger:
            transports:
                cloud: 'sync://'
To disable the feature entirely, set laravel_cloud.queue.enabled: false.

Summary

laravel/symfony-on-cloud is the official bundle that extends Laravel Cloud infrastructure to Symfony applications. The initial release focuses on managed queues, with a fully featured Symfony Messenger integration that includes multiple queues, FIFO and fair queues, and configurable retry strategies.
StampPurpose
CloudQueueStampDispatch to a specific queue
CloudFifoStampOrder and deduplication control for FIFO queues
CloudMessageGroupStampFair distribution across tenants on standard queues
The README promises that additional Laravel Cloud features will follow. For teams running Symfony applications on Laravel Cloud, this package is shaping up to be an essential integration point.

laravel/symfony-on-cloud

Official repository and README

Laravel Cloud

Laravel Cloud official site

Symfony Messenger

Symfony Messenger documentation

Laravel Cloud Docs

Laravel Cloud detailed documentation
Last modified on July 2, 2026