Zum Hauptinhalt springen
Dieser Artikel ist eine erste Analyse mit Stand Juni 2026. laravel/symfony-on-cloud ist ein Repository in Entwicklung; weitere Funktionen sind geplant.

Was ist laravel/symfony-on-cloud?

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

composer require laravel/symfony-on-cloud
Registrieren Sie das Bundle in config/bundles.php (das Symfony-Flex-Rezept fehlt noch, deshalb manuell):
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.
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
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.

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.
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. Nachrichten werden strikt in Reihenfolge zugestellt und Duplikate entfernt.
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.
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 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.
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 ist ausschließlich für Standard-Queues und funktioniert bei FIFO-Queues nicht. Für Gruppierung in FIFO-Queues verwenden Sie CloudFifoStamp.

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.
# 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.
# 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.
StampZweck
CloudQueueStampDispatch auf eine bestimmte Queue
CloudFifoStampReihenfolge und Deduplizierung in FIFO-Queues
CloudMessageGroupStampfaire 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.

laravel/symfony-on-cloud

Offizielles Repository und README

Laravel Cloud

Offizielle Website von Laravel Cloud

Symfony Messenger

Offizielle Symfony-Messenger-Dokumentation

Laravel-Cloud-Dokumentation

Detaillierte Dokumentation zu Laravel Cloud
Zuletzt geändert am 13. Juli 2026