本文為 2026 年 6 月時點的初步調查。
laravel/symfony-on-cloud 是開發階段的 repository,未來預計會追加更多功能。什麼是 laravel/symfony-on-cloud
laravel/symfony-on-cloud 是為 Symfony 應用程式帶來 Laravel Cloud 功能的官方 Symfony bundle。這是 2026 年 6 月 27 日發佈的非常新的 repository。 Laravel Cloud 過去是 Laravel 應用專用的平台,透過此套件,Symfony 開發者也可以運用 Laravel Cloud 的基礎架構(如託管佇列等)。 首個功能是使用 Symfony Messenger 的託管佇列。README 中提到「more Laravel Cloud capabilities will follow」,未來還會追加佇列以外的功能。安裝
config/bundles.php 註冊該 bundle(Symfony Flex 的 recipe 尚未支援,因此需要手動加入)。
託管佇列
基本設定
Bundle 提供了名為cloud 的預先建立 transport。在 Laravel Cloud 環境中會自動注入連線設定,因此不需要手動設定 DSN。
多個佇列
在 Laravel Cloud 環境中可建立多個託管佇列(例如default 與 critical)。每個佇列以獨立的 SQS 佇列與 worker 運作。使用 CloudQueueStamp 可將訊息 dispatch 到特定佇列。
FIFO 佇列
名稱以.fifo 結尾的託管佇列會被視為 FIFO 佇列。訊息會以嚴格順序傳遞,並排除重複。
CloudFifoStamp。
公平佇列(Fair Queue)
SQS 公平佇列 是即使某個 tenant 投入大量 job,也不會壓迫其他 tenant 的機制。在標準佇列中加上 message group ID 後,SQS 就會公平地在 tenant 之間分配處理能力。CloudMessageGroupStamp 僅適用於標準佇列,FIFO 佇列無法使用。FIFO 佇列中的 group 指定請使用 CloudFifoStamp。延遲
使用DelayStamp 可對標準佇列設定傳送延遲。不過受限於 SQS 規格,最多為 15 分鐘。超過 15 分鐘會發生錯誤(不會靜默地在 15 分鐘後執行)。
FIFO 佇列不支援延遲,因此 DelayStamp 本身會產生錯誤。
重試
Handler 失敗時,bundle 會將訊息返回 SQS,透過 visibility timeout 進行重新傳遞。這樣可以等到 SQS 的 visibility timeout 上限(12 小時),而非傳送限制(15 分鐘)。 重試設定使用 Symfony Messenger 標準的retry_strategy。
UnrecoverableExceptionInterface 的例外會不重試,立即記錄為失敗。
本機開發
cloud transport 可以在應用中覆蓋。本機使用 sync:// 時,job 會立即同步執行。
laravel_cloud.queue.enabled: false。
總結
laravel/symfony-on-cloud 是讓 Symfony 應用也可運用 Laravel Cloud 基礎架構的官方 bundle。目前實作了託管佇列,備齊了與 Symfony Messenger 整合、多重佇列、FIFO / 公平佇列、重試設定等實用功能。
根據官方 README,未來會追加佇列以外的 Laravel Cloud 功能。若在 Laravel Cloud 上運營 Symfony 應用的情境增加,這將是非常有價值的套件。
相關連結
laravel/symfony-on-cloud
官方 repository、README
Laravel Cloud
Laravel Cloud 官方網站
Symfony Messenger
Symfony Messenger 官方文件
Laravel Cloud 文件
Laravel Cloud 詳細文件