工作佇列總覽

本頁提供工作佇列的說明、使用時機及使用方式。應用程式可透過工作佇列在使用者要求之外以非同步方式執行作業 (稱為「工作」)。如果應用程式需要在背景執行工作,則會將工作新增至「工作佇列」。這些工作之後會由工作站服務來執行。

發送佇列和提取佇列

工作佇列有兩種類型,分別為「發送」和「提取」。工作佇列服務將工作要求傳送至工作站服務的方式,會依據不同的佇列而異。

發送佇列會將 HTTP 要求傳送到 App Engine 工作站服務以執行工作。發送佇列以穩定、可靠的速率來發送這些要求,並保證可靠的工作執行過程。由於您能控制工作從佇列傳送的速率,因此能控制工作站的資源調度行為,進而對成本有所掌控。

由於工作會以 App Engine 服務指定的要求來執行,因此必須遵守嚴格的期限。對服務進行自動調整資源配置所處理的工作,必須在 10 分鐘內完成。基本資源配置和手動調整資源配置服務所處理的工作,其執行時間最長可達 24 小時。

提取佇列不會傳送工作。這些佇列依靠其他工作站服務因其計劃所需而向佇列「租用」工作。您可以透過提取佇列對工作的處理時間與位置享有更多掌控與彈性,但您也需要針對程序管理多付出點心力。租用工作的工作站會在租用時宣告租用期限。期限到期時,工作站必須完成並刪除工作,否則工作佇列服務將允許其他工作站租用工作。

提示:在某些情況下,Google Cloud Pub/Sub 是提取佇列的合適替代方案。

工作佇列的所有工作都以非同步方式執行。建立工作的應用程式會將工作交給佇列。無論工作完成或成功與否,來源應用程式都不會收到通知。

如果工作站無法處理工作,工作佇列服務會提供具有重試機制的佇列,所以工作可以進行有限次數的重試。

使用案例

推送佇列

典型的發送佇列使用方式是「緩慢」作業。請試想社交網路的訊息傳遞系統。使用者每次傳送訊息時,網路就需要更新寄件者的追蹤者。這可能是非常費時的作業。應用程式可以使用發送佇列,將每一則訊息的工作在到達時列入佇列,以便將其傳送到工作站服務進行處理。工作站接收到工作要求時,能夠擷取寄件者的追蹤者清單,並且更新每位追蹤者的資料庫。工作站可將另一個發送工作列入佇列,以便更新每個資料庫,藉此提升作業效率。

發送佇列的另一種用法是已排定的工作。請想像一個實作廣告行銷活動的應用程式。經編寫用來傳送電子郵件的工作群組可新增至發送佇列中,內含在未來指定時間之前保留工作的指示。當到期日期來到時,工作佇列服務將開始發送要求以執行工作。

提取佇列

提取佇列適合需要分批處理工作以提升效率的情形,有個解決做法是妥善利用為提取佇列附加「標記」的功能,如此工作站就可租用一組具有相同標記的工作。有一個典型的例子,就是維護多個不同遊戲排行榜,並有許多玩家與團隊時常上線遊戲的應用程式。每次出現創新高分時,應用程式可將具有分數與玩家資訊的提取工作排入佇列,並且使用遊戲 ID 做為工作標記。工作站會定期「啟動」,租用一組具有相同遊戲 ID 的工作,然後更新排行榜。您可以使用指定標記值直接租用工作,或讓服務決定要傳送哪些類似標記的工作。

使用標記分批處理工作非常實用。由於標記可在應用程式執行時動態產生,工作站無需額外作業就可處理新遊戲 ID。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Go 適用的 App Engine 標準環境