É 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:
Verificar se a fila tem roteamento no nível da fila
Execute o comando gcloud tasks queues describe no terminal:
gcloud tasks queues describe QUEUE_NAME \ --location=LOCATION
Substitua:
QUEUE_NAME
: o nome da fila.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 ouriOverride
foi definido.Se a saída incluir uma linha para
uriOverride
com umhost
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 deuriOverride
não mostrar umhost
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étodoBufferTask
. - 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, tarefasBufferTask
), mas respeita o roteamento de tarefas que têm as próprias especificações de roteamento. Em seguida, useCreateTask
. Esse método permite especificar o roteamento individual para a tarefa. Saiba como criar tarefas com o métodoCreateTask
.
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.