选择 Pub/Sub 或 Cloud Tasks

Cloud TasksPub/Sub 都可用于实现消息传递和异步集成。虽然它们在概念上类似,但都是针对不同用例集而设计的。 本页面可帮助您为自己的用例选择合适的产品。

主要区别

Pub/Sub 与 Cloud Tasks 之间的主要区别在于隐式调用与显式调用的概念。

Pub/Sub 旨在将事件的发布者与这些事件的订阅者分离开来。发布者无需了解其订阅者的任何信息。 因此,Pub/Sub 除了能保证传送消息之外,还使发布者无法控制消息的传送。通过这种方式,Pub/Sub 支持隐式调用:发布者通过发布事件隐式触发订阅者执行。

相比之下,Cloud Tasks 旨在进行显式调用,这种方式使得发布者可以保留对执行的完全控制权。特别是,发布者可指定要将每条消息传送到哪个端点。

整体 Cloud Tasks 适用于以下用例:任务生产者需要推迟或控制特定 Webhook 或远程过程调用的执行时间。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 个/项目