在 Go 中使用推送队列

本页面概括介绍了推送队列。推送队列通过将 HTTP 请求分派给 App Engine 工作器服务来运行任务。系统以固定的速率传送请求。如果某任务失败,则服务将发送另一个请求来重试该任务。您必须为所使用的每种任务提供一个处理程序。单个服务可以有多个处理程序来处理不同种类的任务,您也可以使用不同的服务来管理不同的任务类型。

该应用将任务分流到任务队列服务,该服务使用 HTTP 将其发送到工作器

任务截止期限

当工作器服务收到推送任务请求时,它必须在截止期限之前处理请求并发送 HTTP 响应,截止期限取决于工作器服务的扩缩类型

自动扩缩服务必须在 10 分钟之内完成。手动和基本扩缩服务最长可以运行 24 小时。

200-299 之间的 HTTP 响应代码表示成功;所有其他值表示任务失败。如果任务未能在截止期限内响应,或者返回无效的响应值,则系统将重试该任务。

重试失败的任务

如果推送任务请求处理程序返回 200-299 范围之外的 HTTP 状态代码,或者在任务截止期限之前未能返回任何响应,则队列将重试该任务,直到成功为止。为了避免太多请求涌入应用,系统会逐渐退避,但仍会为失败的任务安排重试尝试,每小时最少进行一次重试。

使用推送队列

使用推送队列时,您至少需要执行以下操作:

  • 以编程方式创建任务,然后将任务添加到默认推送队列,或者添加到您已创建的一个或多个已命名的推送队列。
  • 编写处理程序来处理任务的请求,并将该处理程序分配给某项 App Engine 服务。

您也可以视需要执行以下操作:

使用推送队列时,您的应用需要遵守其他配额限制。

后续步骤