Cloud Tasks と Pub/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 で軽減 |