メインコンテンツへスキップ
この記事は 2026年6月時点の初期調査です。laravel/symfony-on-cloud は開発段階のリポジトリで、今後機能が追加される予定です。

laravel/symfony-on-cloud とは

laravel/symfony-on-cloud は、Symfony アプリケーションに Laravel Cloud の機能をもたらす公式 Symfony バンドルです。2026年6月27日に公開された非常に新しいリポジトリです。 Laravel Cloud はこれまで Laravel アプリケーション専用のプラットフォームでしたが、このパッケージにより Symfony 開発者も Laravel Cloud のインフラ(マネージドキュー等)を活用できるようになります。 最初の機能は Symfony Messenger を使ったマネージドキューです。README には「more Laravel Cloud capabilities will follow」とあり、今後もキュー以外の機能が追加される予定です。

インストール

composer require laravel/symfony-on-cloud
次に config/bundles.php にバンドルを登録します(Symfony Flex のレシピは未対応のため手動で追加します)。
return [
    // ...
    Laravel\Cloud\Symfony\LaravelCloudBundle::class => ['all' => true],
];

マネージドキュー

基本設定

バンドルは cloud という名前の既成トランスポートを提供します。Laravel Cloud 環境では接続設定を自動で注入するので、DSN を手動設定する必要はありません。
# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            '*': cloud
既存の Symfony Messenger アプリを Laravel Cloud に移行する場合も簡単です。Cloud が MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue を自動注入するため、従来の async トランスポート(dsn: '%env(MESSENGER_TRANSPORT_DSN)%')をそのまま使っているアプリはコード変更なしで動作します。

複数キュー

Laravel Cloud 環境では複数のマネージドキュー(例:defaultcritical)を作成できます。各キューは独立した SQS キューとワーカーで動作します。CloudQueueStamp を使って特定のキューに dispatch します。
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;
use Symfony\Component\Messenger\MessageBusInterface;

$bus->dispatch(new ProcessReport($report), [new CloudQueueStamp('critical')]);
スタンプなしで dispatch するとデフォルトキューに送られます。

FIFO キュー

名前が .fifo で終わるマネージドキューは FIFO キュー として扱われます。メッセージが厳密な順序で配信され、重複が排除されます。
use Laravel\Cloud\Symfony\Queue\Messenger\CloudQueueStamp;

$bus->dispatch(new ProcessOrder($order), [new CloudQueueStamp('orders.fifo')]);
デフォルトでは、グループ ID にキュー名、重複排除 ID に一意の値が自動設定されます。より細かい制御が必要な場合は 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,
    ),
]);

フェアキュー

SQS フェアキュー は、一つのテナントが大量のジョブを投入しても他のテナントを圧迫しない仕組みです。標準キューでメッセージグループ ID を付与することで、SQS がテナント間で処理能力を公平に分配します。
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標準キュー専用で FIFO キューでは使えません。FIFO キューでのグループ指定は CloudFifoStamp を使います。

遅延

DelayStamp を使うと標準キューに送信遅延を設定できます。ただし SQS の仕様により 最大 15 分の制限があります。15 分を超えるとエラーになります(サイレントに 15 分で実行されることはありません)。 FIFO キューでは遅延がサポートされていないため、DelayStamp 自体がエラーになります。

リトライ

ハンドラーが失敗した場合、バンドルはメッセージを SQS に返してビジビリティタイムアウト経由で再配信します。送信制限(15 分)ではなく SQS のビジビリティタイムアウト上限(12 時間)まで待機できます。 リトライ設定は Symfony Messenger 標準の retry_strategy を使います。
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            cloud:
                retry_strategy:
                    max_retries: 3    # 3回リトライ(計4回実行)
                    delay: 1000       # 最初のバックオフ(ミリ秒)
                    multiplier: 2     # バックオフ倍率
                    max_delay: 0      # 上限なし(SQS の 12 時間制限が有効)
UnrecoverableExceptionInterface を実装した例外はリトライなしで即座に失敗として記録されます。

ローカル開発

cloud トランスポートはアプリで上書きできます。ローカルでは sync:// を使うとジョブが即時同期実行されます。
# config/packages/messenger.yaml
when@dev:
    framework:
        messenger:
            transports:
                cloud: 'sync://'
機能を完全に無効化するには laravel_cloud.queue.enabled: false を設定します。

まとめ

laravel/symfony-on-cloud は Laravel Cloud のインフラを Symfony アプリでも活用できるようにする公式バンドルです。まずマネージドキューが実装されており、Symfony Messenger との統合、複数キュー、FIFO/フェアキュー、リトライ設定など実用的な機能が揃っています。
スタンプ用途
CloudQueueStamp特定のキューに dispatch
CloudFifoStampFIFO キューの順序・重複排除制御
CloudMessageGroupStamp標準キューのフェア分配(テナントキー)
公式の README によれば今後もキュー以外の Laravel Cloud 機能が追加される予定です。Symfony アプリを Laravel Cloud で運用するケースが増えれば非常に価値あるパッケージになりそうです。

関連リンク

laravel/symfony-on-cloud

公式リポジトリ・README

Laravel Cloud

Laravel Cloud の公式サイト

Symfony Messenger

Symfony Messenger 公式ドキュメント

Laravel Cloud ドキュメント

Laravel Cloud 詳細ドキュメント
最終更新日 2026年6月29日