您可以使用 BufferTask
方法或
CreateTask
方法。本页面提供了有关如何在两种创建 HTTP 任务的方法之间进行选择的指南。
使用 BufferTask
方法,您可以通过将 HTTP 请求发送到
队列。借助 CreateTask
方法,您可以通过构建任务来创建任务
对象。对于大多数使用场景,明确构造任务对象
不需要。创建任务的最佳方法取决于队列是否具有队列级路由。
准备工作
请查看以下用例列表,看看是否有任何用例适用于您:
- 您希望使用 RPC API 或客户端库(而不是 REST API)
- 您想以如下身份创建任务: App Engine 任务对象(而不是 用于常规 HTTP 目标的更典型任务对象, App Engine 目标)
如果您符合上述任一条件,则无需选择任务创建方法,因为系统仅支持一种方法(CreateTask
方法)。直接前往
根据您的任务类型查看 CreateTask
文档:
检查您的队列是否使用队列级路由
在终端中运行以下 gcloud CLI 命令:
gcloud tasks queues describe QUEUE_NAME
将
QUEUE_NAME
替换为队列的名称。在输出中,查找
httpTarget
字段,并检查是否已设置uriOverride
。如果输出包含
uriOverride
行,其中指定了host
, 您的队列具有队列级路由。如需选择任务创建方法,请参阅 使用队列级路由的队列部分。如果输出结果不包含
uriOverride
对应的行或uriOverride
说明未显示指定的host
,您的队列显示了 没有队列级路由。如需选择任务创建方法,请参阅 部分无队列级路由的队列部分(或者 配置队列级路由)。
采用队列级路由的队列
对于使用队列级路由的队列,任务创建方法依赖于 任务的路由要求:
- 任务的路由要求与队列级别指定的要求相同:使用
BufferTask
。了解如何使用BufferTask
方法创建任务。 - 任务的路由要求与在队列级别指定的要求不同:
将队列的
UriOverrideEnforceMode
到
IF_NOT_EXISTS
,以确保队列级路由适用于 哪个路由不存在(例如BufferTask
任务),但遵循 具有自身路由规范的任务的路由。然后使用CreateTask
。通过此方法,您可以为任务指定单独的路由。 了解如何使用CreateTask
方法。
无队列级别路由的队列
对于没有队列级路由的队列,请使用 CreateTask
创建任务
方法(或
配置
队列级路由)。CreateTask
方法包括为以下对象指定路由:
任务,对于尚无路由的队列而言,是必需的
查看队列级别的信息了解如何使用 CreateTask
方法创建任务。
了解队列级路由
队列级路由可让您为基于任务的任务指定默认路由信息 加入队列。您可以指定默认路由仅适用于没有自己的路由信息的任务,还是适用于所有任务。
在以下情况下,请选择队列级路由:
- 使用标准 HTTP 请求(而不是通过构建任务)创建任务 对象)
- 在目标服务前面使用队列作为缓冲区
基于目标的方法
队列级路由最适合与为每个目标服务使用一个队列的架构搭配使用。通过该模型,您可以:
- 根据任务的目标管理任务(例如,重定向一组 任务)
- 将队列中的所有任务发送到同一目标
- 使用
BufferTask
种方式
启用和停用队列级替换行为
配置队列级路由后,您可以通过设置队列的 UriOverrideEnforceMode 来决定何时强制执行路由。
IF_NOT_EXISTS
:只有当任务不包含自己的路由信息时,队列级路由才适用。如果您想加入队列,请使用此设置 能够将任务分派给不同的目标。ALWAYS
:即使任务包含自己的路由信息,队列级路由始终会应用。在任务级别设置的任何路由信息 会被队列级路由覆盖。如果您想执行以下操作,请使用此设置 要求给定队列中的任务使用相同的路由信息。