Pub/Sub または Cloud Tasks の選択

メッセージの受け渡しと非同期統合を実装する際には、Cloud TasksPub/Sub のどちらも使用できます。コンセプトは似ていますが、それぞれ異なる一連のユースケースを対象に設計されています。このページでは、ユースケースに適したプロダクトを選択できるようユーザーをサポートします。

主な違い

Pub/Sub と Cloud Tasks の主な違いは、暗黙的呼び出しと明示的呼び出しの概念にあります。

Pub/Sub は、イベントのパブリッシャーとそれらのイベントのサブスクライバーを分離することを目的としています。パブリッシャーはサブスクライバーについて理解している必要はありません。そのため、Pub/Sub では、パブリッシャーは配信を保証すること以外に、メッセージ配信を制御できません。このように、Pub/Sub は暗黙の呼び出しをサポートします。パブリッシャーは、イベントをパブリッシュすることで、サブスクライバーにイベントを実行するよう暗黙的に要求します。

Cloud Tasks はこれとは対照的に、明示的な呼び出しを行って、パブリッシャーが実行を完全に制御できるようにすることを目的としています。特に、パブリッシャーは各メッセージが配信されるエンドポイントを指定します。

Cloud Tasks は全体的に、タスクのプロデューサーが特定の Webhook またはリモート プロシージャ コールの実行のタイミングを延期または制御する必要があるユースケースに適しています。Pub/Sub は、実行に対する制御がある程度制限される、一般的なイベントデータの取り込みと配信パターンに適しています。

詳細な機能の比較

機能 Cloud Tasks Pub/Sub
Webhook を使用した push はい はい
at-least-once 配信の保証 はい
構成可能な再試行 はい
タスク/メッセージ作成の重複排除 はい ×
計画的な配信 ×
順序付けられた配信 ×(キューに登録されたタスクの順序はベスト エフォートで保持) はい(順序指定キーを使用)
明示的なレート制御 はい フロー制御を実装できるサブスクライバー クライアントを pull
API を使用した pull ×
バッチ挿入 はい はい
メッセージごとに複数のハンドラ / サブスクライバー ×
タスク/メッセージの保持 31 日 最大 31 日
タスク/メッセージの最大サイズ 1MB 10MB
最大配信レート 500 QPS/キュー 上限なし(リージョンのスループット割り当ての対象)
利用可能な地域 リージョン グローバル
push ハンドラ / サブスクライバーの最大処理期間 30 分(HTTP)
10 分(App Engine スタンダードの自動スケーリング)
24 時間(App Engine スタンダードの手動スケーリングまたは基本スケーリング)
60 分(App Engine フレキシブル)
push オペレーションに 10 分
キュー/サブスクリプションの数 1 プロジェクト、1 リージョンあたり 1,000(割り当て増加リクエストで増やすことが可能) 1 プロジェクトあたり 10,000