Skip to main content
本文為 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。
將既有的 Symfony Messenger 應用遷移到 Laravel Cloud 也很簡單。Cloud 會自動注入 MESSENGER_TRANSPORT_DSN=laravel-cloud://managed-queue,因此原本使用 async transport(dsn: '%env(MESSENGER_TRANSPORT_DSN)%')的應用可完全不改程式碼運作。

多個佇列

在 Laravel Cloud 環境中可建立多個託管佇列(例如 defaultcritical)。每個佇列以獨立的 SQS 佇列與 worker 運作。使用 CloudQueueStamp 可將訊息 dispatch 到特定佇列。
未指定 stamp 就 dispatch 的話,會傳送到預設佇列。

FIFO 佇列

名稱以 .fifo 結尾的託管佇列會被視為 FIFO 佇列。訊息會以嚴格順序傳遞,並排除重複。
預設情況下,group ID 會自動設為佇列名稱,deduplication ID 則自動設為唯一值。若需更精細的控制,可加上 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 詳細文件
最後修改於 2026年8月2日