Cloud Tasks 和 Pub/Sub 都可用來實作訊息傳遞和非同步整合操作。雖然兩者在概念上相似,但實則是為不同用途而設計。本文可協助您為自己的用途選擇合適的產品。
主要差異
Pub/Sub 和 Cloud Tasks 間最主要的差異,在於前者實行的概念為隱含叫用,後者實行的概念則為明確叫用。
Pub/Sub 的目的在於讓事件發布端與事件訂閱端脫鉤。發布端不需對其訂閱端有知情必要。因此,除了保證會確實提交訊息外,Pub/Sub 不會讓發布端控制訊息傳送的方式。Pub/Sub 透過這種方式支援隱含叫用,也就是發布端透過發布事件,間接讓訂閱端執行作業。
相反地,Cloud Tasks 的目的是進行「明確」叫用,讓發布者可完全掌握執行情況。具體來說,發布者可以指定要提交每則訊息的端點。
整體而言,在工作生產端需要延後或控制特定 Webhook 或遠端程序呼叫執行時間的情況下,適合使用 Cloud Tasks。Pub/Sub 則適用於更廣泛的事件資料擷取和分布模式,這些模式在某種程度上能夠犧牲對執行方式的控管權。
詳細功能比較
| 功能 | Cloud Tasks | Pub/Sub |
|---|---|---|
| 使用 Webhook 推送 | 是 | 是 |
| 保證至少傳送一次 | 是 | 是 |
| 可設定重試作業 | 是 | 是 |
| 簡化工作/訊息建立作業 | 是 | 否 |
| 排定傳送作業 | 是 | 否 |
| 已訂購的商品 | 否,系統會盡量保留佇列中的工作順序 | 是,透過排序鍵 |
| 確實控管傳送率 | 是 | 提取訂閱者用戶端可以實作流量控制 |
| 使用 API 提取 | 否 | 是 |
| 批次插入 | 是 | 是 |
| 將每則訊息傳送給多個處理程式/訂閱者 | 否 | 是 |
| 工作/訊息保留時間 | 31 天 | 最多 31 天 |
| 工作/訊息的大小上限 | 1 MB | 10 MB |
| 最高放送率 | 每個佇列 500 QPS | 無上限,但須遵守區域輸送量配額 |
| 地理區域可用性 | 地區 | 全球通用 |
| 推送處理程式/訂閱者處理時間上限 | 30 分鐘 (HTTP) 10 分鐘 (App Engine 標準自動調整資源配置) 24 小時 (App Engine 標準手動或基本資源配置) 60 分鐘 (App Engine 彈性環境) |
推送作業為 10 分鐘 |
| 佇列/訂閱數量 | 每個專案每個區域 1,000 個 (可透過配額增加申請提高上限) | 每項專案 10,000 個 |