Cloud Tasks と Pub/Sub はどちらも、メッセージ送信と非同期統合を実装する際に使用できますが、機能は似ていても同一ではありません。このページでは、ユースケースに適したプロダクトを選択できるようユーザーをサポートします。
主な違い
Pub/Sub と Cloud Tasks の主な違いは、暗黙的呼び出しと明示的呼び出しの概念にあります。
Pub/Sub は、イベントのパブリッシャーとそれらのイベントのサブスクライバーを分離することを目的としています。パブリッシャーはサブスクライバーについて理解している必要はありません。その結果、Pub/Sub では、パブリッシャーは配信を保証することだけが可能となり、それ以外のメッセージ配信を制御することはできません。このように、Pub/Sub は暗黙の呼び出しをサポートします。パブリッシャーは、イベントをパブリッシュすることで、サブスクライバーにイベントを実行するよう暗黙的に要求します。
Cloud Tasks はこれとは対照的に、明示的な呼び出しを行って、パブリッシャーが実行を完全に制御できるようにすることを目的としています。特に、パブリッシャーは各メッセージが配信されるエンドポイントを指定します。
さらに、Cloud Tasks には、Pub/Sub のパブリッシャーは利用できない、次のようなキューおびタスク管理向けのツールが用意されています。
- 具体的な配信時間のスケジュール
- 配信レートの管理
- 構成可能な再試行
- キュー内の個々のタスクへのアクセスと管理
- タスク / メッセージ作成の重複排除
詳細な機能の比較
機能 | Cloud Tasks | Cloud Pub/Sub |
---|---|---|
Webhook による push | ○ | ○ |
at-least-once 配信の保証 | ○ | ○ |
構成可能な再試行 | ○ | ○ |
タスク作成の重複排除 | ○ | × |
計画的な配信 | ○ | × |
順序付けられた配信 | ×(キューに登録されたタスクの順序はベスト エフォートで保持) | ○(順序指定キーを使用) |
明示的なレート制御 | ○ | フロー制御を実装できるサブスクライバー クライアントを pull |
API による pull | × | ○ |
バッチ挿入 | × | ○ |
メッセージごとに複数のハンドラ / サブスクライバー | × | ○ |
タスク / メッセージの保持 | 30 日 | 最大 31 日 |
タスク / メッセージの最大サイズ | 1 MB | 10 MB |
最大配信レート | 500 QPS/キュー | 上限なし |
利用可能な地域 | リージョン | グローバル |
push ハンドラ / サブスクライバーの最大処理期間 | 30 分(HTTP) 10 分(App Engine スタンダードの自動スケーリング) 24 時間(App Engine スタンダードの手動スケーリングまたは基本スケーリング) 60 分(App Engine フレキシブル) |
push オペレーションに 10 分 |
プロジェクトあたりのキュー / サブスクリプションの数 | 1,000/プロジェクト(割り当て増加リクエストで増やすことが可能) | 10,000/プロジェクト |