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 推送 | 是 | 是 |
保证至少传送一次 | 是 | 是 |
可配置的重试 | 是 | 是 |
创建任务时避免重复 | 是 | 否 |
按计划传送 | 是 | 否 |
订外卖 | 不会。系统会尽量保留已加入队列的任务顺序。 | 是,对于排序键 |
明确的速率控制 | 是 | 拉取订阅者客户端可以实现流控制 |
通过 API 拉取 | 否 | 是 |
批量插入 | 否 | 是 |
每条消息有多个处理者/订阅者 | 否 | 是 |
任务/消息保留时间 | 30 天 | 最长 31 天 |
任务/消息的最大大小 | 1 MB | 10 MB |
最高传送速率 | 500 QPS/队列 | 没有上限 |
地理位置 | 单区域 | 全球 |
推送处理者/订阅者处理时长上限 | 30 分钟 (HTTP) 10 分钟(App Engine 标准环境 - 自动扩缩) 24 小时(App Engine 标准环境 - 手动或基本扩缩) 60 分钟(App Engine 柔性环境) |
对于推送操作为 10 分钟 |
每个项目的队列/订阅数量 | 1000 个/项目,该配额可申请增加 | 10000 个/项目 |