Cloud Tasks か Pub/Sub かの選択

Cloud TasksPub/Sub はどちらも、メッセージ送信と非同期統合を実装する際に使用できますが、機能は似ていても同一ではありません。このガイドでは、ユースケースに適したプロダクトを選択できるようユーザーをサポートします。

主な違い

Pub/Sub と Cloud Tasks の主な違いは、暗黙的呼び出しと明示的呼び出しのどちらを使用するかです。

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

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

さらに、Cloud Tasks には、Pub/Sub のパブリッシャーは利用できない、次のようなキューおびタスク管理向けのツールが用意されています。

  • 具体的な配信のスケジュール設定
  • 配信レートの管理
  • 正確な構成可能な再試行
  • キュー内の個々のタスクへのアクセスと管理
  • タスク作成の重複排除

詳細な機能の比較

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

構成可能な再試行の違い

Cloud Tasks では、試行回数と期間の厳格な制限など、タスクの再試行を正確に制御できます。Pub/Sub は、信頼性の高い配信に重点を置いています。指数バックオフとデッドレター キュー(DLQ)を使用して、確認応答されていないメッセージの再試行を管理します。

機能Cloud Tasks Pub/Sub
ユースケースの焦点特定のタスクの最終的な実行を保証する 切り離されたサブスクライバーへのメッセージ配信を保証する
プライマリ コントロールキューレベルとタスクレベルの再試行構成 サブスクリプション レベルの再試行ポリシーと DLQ
再試行の停止最大試行回数、最大再試行時間 メッセージの確認応答、メッセージの有効期限、DLQ 転送
最大試行回数明示的に構成可能 DLQ の最大配信試行回数を介して間接的に
バックオフのチューニング最小/最大バックオフ、最大倍増回数 指数バックオフ ポリシーの最小/最大バックオフ
無期限の再試行構成されていれば可能だが、タスクの最大保持期間の上限が適用される 期限切れまで未確認のメッセージのデフォルト。DLQ で軽減

次のステップ