選擇 Pub/Sub 或 Cloud Tasks

Cloud TasksPub/Sub 都可用來實作訊息傳遞和非同步整合操作。儘管兩者在概念上相似,但實則是為不同用途而設計。本頁面可幫助您針對用途選擇合適的產品。

主要差異

Pub/Sub 和 Cloud Tasks 間最主要的差異,在於前者實行的概念為隱含叫用,後者實行的概念則為明確叫用。

Pub/Sub 的目的在於讓事件發布者與事件訂閱者脫鉤。發布者不必瞭解各自的訂閱者。因此,除了保證會確實提交訊息外,Pub/Sub 不會讓發布者控制訊息傳送的方式。這樣一來,Pub/Sub 就能支援「隱含」叫用,也就是發布者透過發布事件,間接讓訂閱者執行動作。

相反地,Cloud Tasks 的目的是進行「明確」叫用,讓發布者可完全掌握執行情況。具體來說,發布者可以指定要提交每則訊息的端點。

整體而言,在工作生產端需要延後或控制特定 Webhook 或遠端程序呼叫執行時間的情況下,適合使用 Cloud Tasks。Pub/Sub 則適用於更廣泛的事件資料擷取和分布模式,這些模式在某種程度上能夠犧牲對執行方式的控管權。

詳細功能比較

功能 Cloud 工作 Cloud Pub/Sub
透過 Webhook 推送
保證至少傳送一次
可設定重試作業
簡化工作建立作業
排定傳送作業
訂購外送 否。系統會盡力保留排入佇列的工作順序。 是,使用排序鍵
確實控管傳送率 拉取訂閱者用戶端可實作流量控制
透過 API 提取
批次插入
將每則訊息傳送給多個處理程式/訂閱者
工作/訊息保留時間 30 天 最多 31 天
工作/訊息的大小上限 1 MB 10 MB
傳送率上限 每個佇列 500 QPS 無上限
地理區域可用性 地區 全球通用
推送處理程式/訂閱者處理時間上限 30 分鐘 (HTTP)
10 分鐘 (App Engine 標準自動調整資源配置)
24 小時 (App Engine 標準手動或基本調整資源配置)
60 分鐘 (App Engine 彈性環境)
推送作業為 10 分鐘
每個專案的佇列/訂閱數量 每個專案 1,000 個 (可透過配額增加申請提高上限) 每個專案 10,000 個