Cloud Tasks か Pub/Sub かの選択

Cloud TasksPub/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 配信の保証
タスク作成の重複排除 ×
構成可能な再試行 ×
計画的な配信 ×
明示的なレート制御 ×(サブスクライバー クライアントがフロー制御を実装できる)
API による pull ×
バッチ挿入 ×
メッセージごとに複数のハンドラ / サブスクライバー ×
タスク / メッセージの保持 30 日 最大 7 日
タスク / メッセージの最大サイズ 100 KB 10 MB
最大配信レート 500 QPS/キュー 上限なし
利用可能な地域 リージョン グローバル
push ハンドラ / サブスクライバーの最大処理期間 30 分(HTTP)
10 分(App Engine スタンダードの自動スケーリング)
24 時間(App Engine スタンダードの手動スケーリングまたは基本スケーリング)
60 分(App Engine フレキシブル)
push オペレーションに 10 分
プロジェクトあたりのキュー / サブスクリプションの数 1,000/プロジェクト(割り当て増加リクエストで増やすことが可能) 10,000/プロジェクト