> ## 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 — run Symfony apps on Laravel Cloud

> A look at a new official Laravel repository. Learn about the official Symfony bundle that lets Symfony apps use Laravel Cloud's managed queues via Symfony Messenger.

<Info>
  This article is initial research as of June 2026. `laravel/symfony-on-cloud` is a repository in development, and more features are planned.
</Info>

## What is laravel/symfony-on-cloud?

[laravel/symfony-on-cloud](https://github.com/laravel/symfony-on-cloud) is an official Symfony bundle that **brings Laravel Cloud capabilities to Symfony applications**. It's a brand new repository published on June 27, 2026.

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

Laravel Cloud has been a Laravel-only platform, but this package now lets **Symfony developers use Laravel Cloud infrastructure (managed queues, etc.)**.

The first feature is **managed queues via Symfony Messenger**. The README notes that "more Laravel Cloud capabilities will follow," so features beyond queues are planned.

## Installation

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

Then register the bundle in `config/bundles.php` (Symfony Flex recipes aren't supported yet, so add it manually).

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

## Managed queues

### Basic configuration

The bundle provides a preconfigured transport named `cloud`. In Laravel Cloud environments, the connection settings are injected automatically, so you don't need to configure a DSN by hand.

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

<Tip>
  Migrating an existing Symfony Messenger app to Laravel Cloud is straightforward. Because Cloud auto-injects `MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue`, apps that use the standard `async` transport (`dsn: '%env(MESSENGER_TRANSPORT_DSN)%'`) work without any code changes.
</Tip>

### Multiple queues

In a Laravel Cloud environment, you can create multiple managed queues (e.g. `default` and `critical`). Each queue runs with an independent SQS queue and workers. Use `CloudQueueStamp` to dispatch to a specific queue.

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

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

Dispatching without a stamp routes to the default queue.

### FIFO queues

Managed queues whose names end with `.fifo` are treated as [FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html). Messages are delivered in strict order and deduplicated.

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

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

By default, the group ID uses the queue name and the deduplication ID uses a unique value. For finer control, add a `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 queues

[SQS fair queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fair-queues.html) prevent one tenant from starving others when they submit a lot of jobs. On standard queues, adding a message group ID has SQS distribute processing capacity fairly across 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` is **for standard queues only** and can't be used on FIFO queues. To specify a group on a FIFO queue, use `CloudFifoStamp`.
</Info>

### Delays

`DelayStamp` sets a send delay on a standard queue. Due to SQS's constraints, the maximum is **15 minutes**. Values over 15 minutes error (they aren't silently executed after 15 minutes).

FIFO queues don't support delays, so using `DelayStamp` with them errors.

### Retries

When a handler fails, the bundle returns the message to SQS and it's redelivered after the visibility timeout expires. This means retries are bounded by SQS's **12-hour** visibility timeout limit, not by the 15-minute send delay limit.

Retry configuration uses Symfony Messenger's standard `retry_strategy`.

```yaml theme={null}
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3    # Retry 3 times (4 executions total)
                    delay: 1000       # Initial backoff (milliseconds)
                    multiplier: 2     # Backoff multiplier
                    max_delay: 0      # No cap (SQS 12-hour limit applies)
```

Exceptions implementing `UnrecoverableExceptionInterface` are recorded as failures immediately without retrying.

## Local development

The `cloud` transport can be overridden per app. Locally, using `sync://` runs jobs synchronously in-process.

```yaml theme={null}
# 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 an official bundle that brings Laravel Cloud infrastructure to Symfony apps. Its first implementation is **managed queues**, with practical features including Symfony Messenger integration, multiple queues, FIFO/fair queues, and retry configuration.

| Stamp                    | Purpose                                            |
| ------------------------ | -------------------------------------------------- |
| `CloudQueueStamp`        | Dispatch to a specific queue                       |
| `CloudFifoStamp`         | Control ordering and deduplication for FIFO queues |
| `CloudMessageGroupStamp` | Fair distribution on standard queues (tenant key)  |

According to the official README, more Laravel Cloud capabilities beyond queues will be added. As more Symfony apps run on Laravel Cloud, this package is set to become very valuable.

## Related links

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

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

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

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


## Related topics

- [June 2026 Laravel updates](/en/blog/changelog/202606.md)
- [Cloud Sessions](/en/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Laravel Cloud Hibernation (auto-sleep)](/en/blog/laravel-cloud-hibernation.md)
- [Laravel Cloud CLI — operate Laravel Cloud from your terminal](/en/blog/laravel-cloud-cli.md)
- [Laravel Cloud — a full look at the Laravel-native PaaS](/en/blog/laravel-cloud.md)
