> ## 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 – Symfony-Apps auf Laravel Cloud betreiben

> Analyse eines neuen offiziellen Laravel-Repositorys. Wir erläutern das offizielle Symfony-Bundle, mit dem sich Managed Queues von Symfony Messenger auf Laravel Cloud nutzen lassen.

<Info>
  Dieser Artikel ist eine erste Analyse mit Stand Juni 2026. `laravel/symfony-on-cloud` ist ein Repository in Entwicklung; weitere Funktionen sind geplant.
</Info>

## Was ist laravel/symfony-on-cloud?

[laravel/symfony-on-cloud](https://github.com/laravel/symfony-on-cloud) ist ein offizielles Symfony-Bundle, das **die Funktionen von Laravel Cloud auch Symfony-Anwendungen zur Verfügung stellt**. Das Repository wurde am 27. Juni 2026 veröffentlicht und ist damit brandneu.

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

Bisher war Laravel Cloud auf Laravel-Anwendungen zugeschnitten. Mit diesem Paket können nun auch **Symfony-Entwickler die Laravel-Cloud-Infrastruktur (u. a. Managed Queues)** nutzen.

Die erste Funktion sind **Managed Queues via Symfony Messenger**. Laut README werden „more Laravel Cloud capabilities will follow" – über die Queue hinaus sind weitere Features geplant.

## Installation

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

Registrieren Sie das Bundle in `config/bundles.php` (das Symfony-Flex-Rezept fehlt noch, deshalb manuell):

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

## Managed Queues

### Grundkonfiguration

Das Bundle bringt einen fertigen Transport namens `cloud` mit. In der Laravel-Cloud-Umgebung werden die Verbindungsdaten automatisch injiziert; eine manuelle DSN-Konfiguration ist nicht nötig.

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

<Tip>
  Die Migration einer bestehenden Symfony-Messenger-App nach Laravel Cloud ist unkompliziert. Da Cloud `MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue` automatisch injiziert, laufen Anwendungen, die bislang den `async`-Transport (`dsn: '%env(MESSENGER_TRANSPORT_DSN)%'`) verwenden, ohne Codeänderungen weiter.
</Tip>

### Mehrere Queues

In der Laravel-Cloud-Umgebung lassen sich mehrere Managed Queues anlegen (z. B. `default` und `critical`). Jede Queue läuft mit eigener SQS-Queue und eigenen Workern. Mit `CloudQueueStamp` dispatchen Sie auf eine bestimmte Queue.

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

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

Ohne Stamp landet der Dispatch auf der Default-Queue.

### FIFO-Queues

Managed Queues mit einem auf `.fifo` endenden Namen gelten als [FIFO-Queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html). Nachrichten werden strikt in Reihenfolge zugestellt und Duplikate entfernt.

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

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

Standardmäßig werden der Group-ID der Queue-Name und der Deduplication-ID ein eindeutiger Wert zugewiesen. Für feinere Kontrolle setzen Sie zusätzlich `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) verhindern, dass ein einzelner Tenant durch Massen-Jobs andere Tenants blockiert. In einer Standard-Queue verteilen Sie mit einer Message-Group-ID die Verarbeitung fair zwischen den 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` ist **ausschließlich für Standard-Queues** und funktioniert bei FIFO-Queues nicht. Für Gruppierung in FIFO-Queues verwenden Sie `CloudFifoStamp`.
</Info>

### Delay

Mit `DelayStamp` lässt sich in Standard-Queues eine Sendeverzögerung setzen. Aufgrund der SQS-Spezifikation gilt jedoch ein **Maximum von 15 Minuten**. Werte darüber führen zu einem Fehler (es wird nicht stillschweigend nach 15 Minuten ausgeführt).

In FIFO-Queues wird kein Delay unterstützt; `DelayStamp` führt dort zu einem Fehler.

### Retry

Schlägt der Handler fehl, gibt das Bundle die Nachricht an SQS zurück und die Zustellung erfolgt über den Visibility-Timeout erneut. Die Wartezeit richtet sich nicht nach dem Sende-Limit (15 Minuten), sondern nach dem SQS-Visibility-Timeout-Maximum von **12 Stunden**.

Retry-Einstellungen folgen der Standard-Konfiguration `retry_strategy` von Symfony Messenger.

```yaml theme={null}
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3    # 3-mal wiederholen (insgesamt 4 Ausführungen)
                    delay: 1000       # initialer Backoff (ms)
                    multiplier: 2     # Backoff-Faktor
                    max_delay: 0      # keine Obergrenze (SQS-12h-Limit greift)
```

Exceptions, die `UnrecoverableExceptionInterface` implementieren, werden ohne Retry sofort als Fehlschlag registriert.

## Lokale Entwicklung

Der Transport `cloud` lässt sich in der App überschreiben. Lokal führt `sync://` Jobs synchron aus.

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

Zum vollständigen Deaktivieren setzen Sie `laravel_cloud.queue.enabled: false`.

## Fazit

`laravel/symfony-on-cloud` ist ein offizielles Bundle, das die Infrastruktur von Laravel Cloud auch für Symfony-Anwendungen nutzbar macht. Zuerst sind **Managed Queues** umgesetzt – mit Integration in Symfony Messenger, mehreren Queues, FIFO-/Fair-Queues und Retry-Konfiguration stehen praxistaugliche Funktionen bereit.

| Stamp                    | Zweck                                            |
| ------------------------ | ------------------------------------------------ |
| `CloudQueueStamp`        | Dispatch auf eine bestimmte Queue                |
| `CloudFifoStamp`         | Reihenfolge und Deduplizierung in FIFO-Queues    |
| `CloudMessageGroupStamp` | faire Verteilung in Standard-Queues (Tenant-Key) |

Laut offizieller README werden über die Queue hinaus weitere Laravel-Cloud-Funktionen folgen. Nimmt der Betrieb von Symfony-Apps auf Laravel Cloud zu, dürfte das Bundle deutlich an Bedeutung gewinnen.

## Weiterführende Links

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

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

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

  <Card title="Laravel-Cloud-Dokumentation" icon="book" href="https://cloud.laravel.com/docs/intro">
    Detaillierte Dokumentation zu Laravel Cloud
  </Card>
</CardGroup>


## Related topics

- [Laravel Cloud – Der Gesamtüberblick zum Laravel-eigenen PaaS](/de/blog/laravel-cloud.md)
- [Laravel-Updates Juni 2026](/de/blog/changelog/202606.md)
- [Laravel Cloud - GitHub Copilot SDK für Laravel](/de/packages/laravel-copilot-sdk/laravel-cloud.md)
- [Cloud Sessions](/de/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Laravel Cloud Hibernation (automatisches Pausieren)](/de/blog/laravel-cloud-hibernation.md)
