Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
É possível criar tarefas HTTP usando o método BufferTask ou o
CreateTask. Esta página oferece orientações sobre como escolher entre os
dois métodos para criar tarefas HTTP.
O método BufferTask permite criar uma tarefa enviando uma solicitação HTTP para a
fila. O método CreateTask permite criar uma tarefa construindo o objeto
de tarefa. Na maioria dos casos de uso, a construção explícita do objeto de tarefa é
desnecessária. O melhor método para criar tarefas depende se a fila
tem roteamento no nível da fila.
Antes de começar
Confira a lista de casos de uso a seguir para saber se algum deles se aplica a você:
Você quer criar tarefas usando a API RPC ou bibliotecas de cliente (em vez de
a API REST)
Você quer criar tarefas como objetos de tarefa do App Engine, em vez de objetos de tarefa mais típicos para destinos HTTP genéricos que podem ou não ser destinos do App Engine.
Se alguma delas se aplica a você, não é necessário escolher o método de criação de tarefas,
porque apenas um método (o método CreateTask) é aceito. Acesse diretamente a
documentação de CreateTask para seu tipo de tarefa:
LOCATION: a região
em que a fila está localizada. Se não for especificado e se houver um app associado, o local do app do App Engine do seu projeto será usado.
Na saída, procure o campo httpTarget e verifique se o
uriOverride foi definido.
Se a saída incluir uma linha para uriOverride com um host especificado,
a fila terá roteamento no nível da fila. Para escolher o método de criação de tarefas, consulte
a seção Filas com roteamento no nível da fila.
Se a saída não incluir uma linha para uriOverride ou se a
descrição de uriOverride não mostrar um host especificado, sua fila
não terá roteamento no nível da fila. Para escolher o método de criação de tarefas, consulte a seção Filas sem roteamento no nível da fila (ou configure o roteamento no nível da fila).
Filas com roteamento no nível da fila
Para filas com roteamento no nível da fila, o método de criação de tarefas depende dos requisitos de roteamento da tarefa:
A tarefa tem os mesmos requisitos de roteamento especificados no nível da fila:
Use BufferTask. Saiba como criar tarefas com o método
BufferTask.
A tarefa tem requisitos de roteamento diferentes dos especificados no nível da fila:defina o UriOverrideEnforceMode
da fila como IF_NOT_EXISTS para garantir que o roteamento no nível da fila seja aplicado a tarefas para
as quais o roteamento não existe (por exemplo, tarefas BufferTask), mas respeita
o roteamento de tarefas que têm as próprias especificações de roteamento. Em seguida, use
CreateTask. Esse método permite especificar o roteamento individual para a tarefa.
Saiba como criar tarefas com o
método
CreateTask.
Filas sem roteamento no nível da fila
Para filas sem roteamento no nível da fila, crie tarefas usando o método CreateTask (ou
configure
o roteamento no nível da fila). O método CreateTask inclui o roteamento especificado para
a tarefa, que é necessário para filas que ainda não têm informações de roteamento
no nível da fila. Saiba como criar tarefas com o método
CreateTask.
Entender o roteamento no nível da fila
O roteamento no nível da fila permite especificar informações de roteamento padrão para tarefas com base
na fila em que elas estão. É possível especificar se o roteamento padrão vai
ser aplicado apenas a tarefas que não têm informações de roteamento próprias ou a todas
as tarefas.
Escolha o roteamento no nível da fila se quiser:
Criar tarefas com solicitações HTTP padrão (em vez de criar o objeto
da tarefa)
Usar uma fila como um buffer na frente de um serviço de destino
A abordagem por destino
O roteamento no nível da fila funciona melhor com arquiteturas que usam uma fila para cada
serviço de destino. Com esse modelo, você pode:
Gerenciar tarefas com base no destino (por exemplo, redirecionar um grupo de
tarefas se o serviço de destino estiver inativo)
Enviar todas as tarefas em uma fila para o mesmo destino
Crie tarefas sem construir explicitamente o objeto de tarefa usando o
método BufferTask.
Ativar e desativar o comportamento de substituição no nível da fila
Depois de configurar o roteamento no nível da fila, você pode decidir quando ele será aplicado
definindo o UriOverrideEnforceMode da fila.
IF_NOT_EXISTS: o roteamento no nível da fila é aplicado apenas quando uma tarefa não
contém as próprias informações de roteamento. Use essa configuração se quiser que a fila
envia tarefas para destinos diferentes.
ALWAYS: o roteamento no nível da fila sempre é aplicado, mesmo que uma tarefa contenha as
próprias informações de roteamento. Todas as informações de roteamento definidas no nível da tarefa são
substituídas pelo roteamento no nível da fila. Use essa configuração se quiser
exigir que as tarefas em uma determinada fila usem as mesmas informações de roteamento.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[],[],null,["# Choose your task creation method\n\nYou can create HTTP tasks using either the `BufferTask` method or the\n`CreateTask` method. This page provides guidance on how to choose between the\ntwo methods for creating HTTP tasks.\n\nThe `BufferTask` method lets you create a task by sending an HTTP request to the\nqueue. The `CreateTask` method lets you create a task by constructing the task\nobject. For most use cases, explicitly constructing the task object is\nunnecessary. The best method for creating tasks depends on whether your queue\nhas queue-level routing.\n\nBefore you begin\n----------------\n\nCheck the following list of use cases to see if any apply to you:\n\n- You want to create tasks using the RPC API or client libraries (rather than the REST API)\n- You want to create tasks as [App Engine task](/tasks/docs/dual-overview#appe) objects (rather than as the more typical task objects for generic HTTP targets which may or may not be App Engine targets)\n\nIf any of these apply to you, you don't need to choose your task creation method\nbecause only one method (the `CreateTask` method) is supported. Go directly to\nthe `CreateTask` documentation for your task type:\n\n- [HTTP tasks](/tasks/docs/creating-http-target-tasks#createtask_method)\n- [App Engine tasks](/tasks/docs/creating-appengine-tasks)\n\nCheck if your queue has queue-level routing\n-------------------------------------------\n\n1. Run the [gcloud tasks queues describe](/sdk/gcloud/reference/tasks/queues/describe)\n command in your terminal:\n\n ```bash\n gcloud tasks queues describe QUEUE_NAME \\\n --location=LOCATION\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eQUEUE_NAME\u003c/var\u003e: the name of your queue.\n - \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: the [region](/tasks/docs/locations) where your queue is located. If not specified, and if there is an associated app, the location of your project's [App Engine app](/appengine/docs/standard/managing-projects-apps-billing) is used.\n2. In the output, look for the field `httpTarget` and check if the\n `uriOverride` has been set.\n\n - If the output includes a line for `uriOverride` with a `host` specified,\n your queue has queue-level routing. To choose your task creation method, see\n the section [Queues with queue-level routing](#queue-level-routing).\n\n - If the output does not include a line for `uriOverride` or if the\n `uriOverride` description does not show a `host` specified, your queue does\n not have queue-level routing. To choose your task creation method, see the\n section [Queues without queue-level routing](#no-queue-level-routing) (or\n [configure queue-level routing](/tasks/docs/configuring-queues#configure_queue-level_routing_for_http_tasks)).\n\nQueues with queue-level routing\n-------------------------------\n\nFor queues with queue-level routing, the task creation method depends on the\ntask's routing requirements:\n\n- **Task has the same routing requirements as specified at the queue level:** Use `BufferTask`. Learn how to create tasks with the [`BufferTask`](/tasks/docs/creating-http-target-tasks#buffertask_method) method.\n- **Task has different routing requirements from those specified at the queue-level:** Set the queue's [UriOverrideEnforceMode](/tasks/docs/reference/rest/v2/projects.locations.queues#UriOverrideEnforceMode) to `IF_NOT_EXISTS` to ensure that the queue-level routing applies to tasks for which routing does not exist (for example, `BufferTask` tasks), but respects the routing of tasks that carry their own routing specifications. Then use `CreateTask`. This method lets you specify individual routing for the task. Learn how to create tasks with the [`CreateTask`](/tasks/docs/creating-http-target-tasks#createtask_method) method.\n\nQueues without queue-level routing\n----------------------------------\n\nFor queues without queue-level routing, create tasks by using the `CreateTask`\nmethod (or\n[configure](/tasks/docs/configuring-queues#configure_queue-level_routing_for_http_tasks)\nqueue-level routing). The `CreateTask` method includes specifying routing for\nthe task, which is required for queues that don't already have routing\ninformation at the queue-level. Learn how to create tasks with the\n[`CreateTask`](/tasks/docs/creating-http-target-tasks#createtask_method)\nmethod.\n\nUnderstand queue-level routing\n------------------------------\n\nQueue-level routing lets you specify default routing information for tasks based\non the queue they're in. You can specify whether you want the default routing to\napply only to tasks that don't have their own routing information, or to all\ntasks.\n\nChoose queue-level routing if you want to:\n\n- Create tasks with standard HTTP requests (rather than by constructing the task object)\n- Use a queue as a buffer in front of a target service\n\n| **Note:** In the case of App Engine targets, any routing done by Cloud Tasks is handled prior to any routing defined in an [App Engine dispatch file](/appengine/docs/flexible/how-requests-are-routed?tab=python#dispatch). This dispatch file lets you send incoming requests to a specific service based on the path or hostname in the request URL.\n\n### The per-target approach\n\nQueue-level routing works best with architectures that use one queue for each\ntarget service. This model lets you:\n\n- Manage tasks based on their target (for example, redirecting a group of tasks if the target service is down)\n- Send all tasks in a queue to the same target\n- Create tasks without explicitly constructing the task object by using the `BufferTask` method\n\n### Turning queue-level override behavior on and off\n\nOnce you configure queue-level routing, you can decide when it gets enforced by\nsetting the queue's\n[UriOverrideEnforceMode](/tasks/docs/reference/rest/v2/projects.locations.queues#UriOverrideEnforceMode).\n\n- `IF_NOT_EXISTS`: The queue-level routing applies only when a task doesn't contain its own routing information. Use this setting if you want the queue to be able to dispatch tasks to different targets.\n- `ALWAYS`: The queue-level routing always applies, even if a task contains its own routing information. Any routing information set at the task level is overridden by the queue-level routing. Use this setting if you want to require tasks in a given queue to use the same routing information."]]